TypeScript 类型检查不适用于使用声明文件的 JavaScript 函数

TypeScript Type Checking Not Working for JavaScript Functions Using Declaration Files

提问人:Usama Ahmed 提问时间:8/16/2023 更新时间:8/16/2023 访问量:37

问:

我目前正在做一个混合了 JavaScript 和 TypeScript 文件的项目。我正在尝试通过使用声明文件将 TypeScript 的类型检查功能用于 JavaScript 函数,但我遇到了一个问题,即 TypeScript 似乎没有按预期强制执行类型检查。

下面是我项目的简化文件夹结构:

tscodes/
├── tsconfig.json
├── declaration_file_samples.ts   // JavaScript entry point
├── traceFunction.js              // JavaScript implementation file
└── declaration_file.d.ts        // TypeScript declaration file

在 中,我声明了一个名为 :declaration_file.d.tstrace

declare function trace(arg: string | number | boolean);

但是,当我在 JavaScript 文件中导入和使用该函数时,TypeScript 似乎没有强制执行类型检查。即使我从声明中删除了 or 等选项,我也不会收到任何类型错误。tracedeclaration_file_samples.tsstringnumber

以下是我declaration_file_samples.ts的内容:

const trace = require('./traceFunction');

// Using the trace function
trace("trace with string");
trace(true);
trace(1);

下面是文件(JavaScript 实现):traceFunction.js

function trace(arg) {
    console.log(arg);
}

module.exports = trace;

我已确保路径和文件名正确无误。我的 TypeScript 配置 (tsconfig.json) 如下所示:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "allowJs": true,
    "declaration": true,
    "strict": true,
    "esModuleInterop": true,
    "outDir": "./dist",
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "noImplicitAny": true
  }
}

我这样做,然后转到文件夹tscdistnode declaration_file_samples.ts

我想知道我是否遗漏了什么或误解了 TypeScript 类型检查如何与 JavaScript 函数和声明文件一起使用。任何见解或建议将不胜感激!

JavaScript TypeScript 声明

评论

0赞 0xts 8/18/2023
尝试将 checkJs 选项添加到您的 .tsconfig.json

答: 暂无答案