Typescript 1.8现在支持无类型的JS文件。要启用此功能, 只需添加编译器标志--allowJs或添加“allowJs”:true即可 tsconfig.json中的compilerOptions
通过https://blogs.msdn.microsoft.com/typescript/2016/01/28/announcing-typescript-1-8-beta/
我正在尝试导入没有打字文件的react-tap-event-plugin。
import * as injectTapEventPlugin from 'injectTapEventPlugin';
表示未找到模块。所以我试过了:
import * as injectTapEventPlugin from '../node_modules/react-tap-event-plugin/src/injectTapEventPlugin.js';
这表示模块解析为非模块实体,无法使用此构造导入。然后我尝试了:
import injectTapEventPlugin = require('../node_modules/react-tap-event-plugin/src/injectTapEventPlugin.js');
在ERROR in ./scripts/index.tsx
Module build failed: TypeError: Cannot read property 'kind' of undefined
node_modules/typescript/lib/typescript.js:39567
崩溃了
我的tsconfig:
{
"compilerOptions": {
"target": "ES5",
"removeComments": true,
"jsx": "react",
"module": "commonjs",
"sourceMap": true,
"allowJs": true
},
"exclude": [
"node_modules"
]
}
我正在使用带有ts-loader的webpack:
{
test: /\.tsx?$/,
exclude: ['node_modules', 'tests'],
loader: 'ts-loader'
}
答案 0 :(得分:5)
新的--allowJs功能并不意味着会为您生成打字,因此您无法做到
import {SomeModule} from 'something';
哪里有什么'是一个普通的JS文件 - 你必须使用普通的JS语法导入它,例如
var someModule = require('something');
如果你没有导入的.d.ts文件,你将无法使用任何类型的注释,例如
let x: someModule
无效。如果您想要导入类型注释,智能感知和任何其他TypeScript功能,您必须为它提供.d.ts文件,或者为您需要的位创建自己的接口。
阅读文档时,看来此功能主要适用于从.js转换为.ts的用户,以便他们可以逐步重写其.js文件。此外,它还用于将您的外部代码与您自己的代码捆绑在一起,并且使您可以使用webpack或browserify等工具捆绑/连接文件。