在checkJs启用了 VsCode 的 nodej 项目中,当需要 json 文件时,例如
const myFile = require('./my-file.json')
Run Code Online (Sandbox Code Playgroud)
这会导致错误[ts] Cannot find module。
如何消除错误警告?
我试过了:
添加"resolveJsonModule": true到compilerOptionsin jsconfig.json,但它不起作用。
创建一个typing.d.ts包含以下内容的文件:
declare module '*.json' {
const value: any;
export default value;
}
但是现在出现了一个错误 [ts] Type 'typeof import("*.json")' must have a '[Symbol.iterator]()' method that returns an iterator. [2488]
我正在一个 Electron 项目中使用checkjs: trueset in myjsconfig.json并在ProjectRoot/typings/index.d.ts.
我希望在所有 JS 文件中都可以使用这些类型。不幸的是,我必须手动引用它们:
如果没有手册参考,它将无法识别类型:
我的项目结构如下所示:
这是typings/index.d.ts的内容:
interface LauncherItem {
name: string,
icon: string,
cmd: string,
args: string,
}
interface AppConfig {
items: LauncherItem[],
appIconSize: number,
}
Run Code Online (Sandbox Code Playgroud)
和jsconfig.json:
{
"compilerOptions": {
"target": "es6",
"checkJs": true
},
"typeAcquisition": {
"include": [
"./typings/index.d.ts"
]
},
"include": [
"**/*.js",
"*.d.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
不确定是否通常需要显式typeAcquisition和包含*.d.ts。它们只是我测试的结果,但显然不起作用......
鉴于以下
/**
* @param {{bar?: string|null}} [param0]
*/
const foo = ({bar = null} = {}) => bar;
Run Code Online (Sandbox Code Playgroud)
Typescript 3.7.2 报告
var bar: string | null
Binding element 'bar' implicitly has an 'any' type.ts(7031)
JavaScript 代码按照我想要的方式工作,但是我如何编写 jsdoc 提示,以便 TypeScript 理解解构bar变量string|null不是any?