Saya memiliki 2 file berikut:

File src/helpers.ts:

const someHelperArray = ['value1', 'value2'] as const

module.exports = {
  someHelperArray
}

File src/car.ts:

const {
  someHelperArray
} = require('./helpers')

Dalam file car.ts ketika saya melayang di atas someHelperArray Saya mendapatkan resolusi tipe server ini: const someHelperArray: any alih-alih tipe literal yang saya harapkan ('value1' | 'value2'). IntinyaScripts tidak mengenali jenis-jenis variabel impor dari file lain. Saya mencoba mengubah pengaturan tsconfig.json tetapi tidak ada yang membantu. Bagaimana cara saya mendapatkan naskah untuk mengenali jenis yang diimpor dari file lain?

Ini adalah {{x0} saya}:

{
    "compilerOptions": {
      "lib": ["dom", "es6", "scripthost", "esnext"],
      "moduleResolution": "node",
      "baseUrl": "src",
      "watch": true,
      "allowJs": true,
      "esModuleInterop": true,
      "module": "commonjs",
      "sourceMap": true,
      "inlineSources": true,
      "allowSyntheticDefaultImports": true,
      "noUnusedLocals": true,
      "noUnusedParameters": true,
      "noImplicitAny": true,
      "strictNullChecks": true,
      "resolveJsonModule": true,
      "experimentalDecorators": true
    },
    "exclude": ["node_modules", "**/*.spec.ts", "ts-out/**/*", "babel-out/**/*"]
  }
  
0
hitchhiker 4 April 2021, 11:42

1 menjawab

Jawaban Terbaik

Modul CommonJS (dengan {require) tidak dianalisis secara statis, yang berarti konten module tidak diketahui sebelum waktu berjalan. Memang, Anda dapat menulis segala jenis kode dinamis untuk menetapkannya (i.e: Object.assign). Jadi jika Anda perlu mempertahankan jenis antara modul Anda harus menulisnya sebagai modul ES6 karena ini secara statis dapat dianalisis. Perhatikan bahwa itu didukung dalam versi Node.js terbaru saja.

Jika Anda ingin terus menggunakan modul CommonJS dalam kode sumber, Anda juga dapat memiliki satu file src/helpers.js:

const someHelperArray = ['value1', 'value2'];

module.exports = {
  someHelperArray
}

Dan satu src/helpers.d.ts seperti ini:

export const someHelperArray: ['value1', 'value2'];
1
Guerric P 5 April 2021, 08:29