Here is the repo for this question,如果需要,您可以克隆该存储库,使用TypeScript进行编译,然后在节点中运行它,以查看是否存在运行时错误,但没有编译时错误。
追赶:为什么当我尝试运行从另一个模块file2导入的对象的方法时,鉴于该对象没有方法,为什么我在file1中没有得到TypeScript的编译时错误?
这是代码,基本上是:
要设置项目:
mkdir test
cd test
npm init --yes
yarn add typescript
touch tsconfig.json
touch index.ts
touch jsModule.js
这里是tsconfig.json
:
{
"compilerOptions": {
"allowJs": false,
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"module": "es2015",
"moduleResolution": "node",
"noImplicitAny": false,
"noImplicitReturns": true,
"noImplicitThis": true,
"sourceMap": true,
"target": "es2015",
"skipLibCheck": true,
"strict": true,
"resolveJsonModule": true
},
"exclude": ["node_modules"]
}
这是我创建的两个文件:
// jsModule.js
export const MyModuleObject = {};
// index.ts
import { MyModuleObject } from './jsModule';
console.log(MyModuleObject.method());
问题:打字稿没有说我打给MyModuleObject.method()
答案 0 :(得分:2)
"noImplicitAny": false
中的 tsconfig.json
会导致您的问题。
它只是表示“允许隐式任何”。由于TS对jsModule.js
导出的内容一无所知,因此您可以有效地允许TS将any
分配为该模块的类型。 MyModuleObject.method()
变成any.any()
,很好。
设置"noImplicitAny": true
,然后TS会抱怨。