在尝试了在 其他地方中发布的建议之后,我发现自己无法运行一个使用非类型化 NPM 模块的打印脚本项目。下面是一个最小的例子和我尝试的步骤。
对于这个最小的示例,我们假设 lodash
没有现有的类型定义。因此,我们将忽略包 @types/lodash
,并尝试手动将其输入文件 lodash.d.ts
添加到我们的项目中。
文件夹结构
接下来是文件。
文件 foo.ts
///<reference path="../typings/custom/lodash.d.ts" />
import * as lodash from 'lodash';
console.log('Weeee');
文件 lodash.d.ts
直接从原始 @types/lodash
包中复制。
文件 index.d.ts
/// <reference path="custom/lodash.d.ts" />
/// <reference path="globals/lodash/index.d.ts" />
文件 package.json
{
"name": "ts",
"version": "1.0.0",
"description": "",
"main": "index.js",
"typings": "./typings/index.d.ts",
"dependencies": {
"lodash": "^4.16.4"
},
"author": "",
"license": "ISC"
}
文件 tsconfig.json
{
"compilerOptions": {
"target": "ES6",
"jsx": "react",
"module": "commonjs",
"sourceMap": true,
"noImplicitAny": true,
"experimentalDecorators": true,
"typeRoots" : ["./typings"],
"types": ["lodash"]
},
"include": [
"typings/**/*",
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
文件 typings.json
{
"name": "TestName",
"version": false,
"globalDependencies": {
"lodash": "file:typings/custom/lodash.d.ts"
}
}
正如您所看到的,我已经尝试了许多导入类型的不同方法:
foo.ts
中package.json
中的 typings
属性tsconfig.json
中使用 typeRoots
和文件 typings/index.d.ts
tsconfig.json
中使用显式 types
tsconfig.json
中包含 types
目录typings.json
文件并运行 typings install
然而,当我运行 Typecript:
E:\temp\ts>tsc
error TS2688: Cannot find type definition file for 'lodash'.
我做错了什么?