我已将打字稿定义添加到 HunterLarco/twitter-v2 ,其结构如下:
package.json
src/
twitter.js
twitter.d.ts
Credentials.js
Credentials.d.ts
并且我想测试
.js
文件是否与 .d.ts
声明文件匹配。
我现在就用这个
tsconfig.json
{
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"alwaysStrict": true,
"baseUrl": ".",
"forceConsistentCasingInFileNames": true,
"lib": ["es2018"],
"module": "commonjs",
"moduleResolution": "node",
"noFallthroughCasesInSwitch": true,
"paths": { "twitter-v2": ["src"] },
"typeRoots": [
"./node_modules/@types",
"./src"
],
"outDir": "dist",
"strict": true,
"target": "es2018"
},
"include": [
"src/**/*",
"tests/**/*"
]
}
但是当我故意向
twitter.d.ts
添加不正确的类型信息并运行 tsc --project tsconfig.json
时,它不会报告任何错误并写入 dist/
。
我需要启用编译器选项来检查js文件(即使允许使用js,打字稿默认情况下也不会这样做)
https://www.typescriptlang.org/tsconfig#checkJs
{
"extends": "@tsconfig/node10/tsconfig.json",
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"alwaysStrict": true,
"checkJs": true,
"forceConsistentCasingInFileNames": true,
"moduleResolution": "node",
"noEmit": true,
"noFallthroughCasesInSwitch": true
},
"include": ["src/**/*", "tests/**/*"]
}
以下是我设法收集的有关“测试 TypeScript 声明文件”主题的一些信息。在我的特定情况下,我维护一个普通的 javascript 包,该包发布到 npm 并附带一个类型声明文件。我需要构建一个测试,确保类型声明在发布新的包版本之前确实有效。如何做到这一点? 这是我发现的:
考虑构建有效和无效类型使用的测试,例如
tests/types.ts
// @ts-expect-error
。有关详细信息,请参阅 typescriptlang.org和 totaltypescript.com。 将您的
index.d.ts
.tsconfig
中,方法是将其添加到 files列表或include 列表中。使用标志 --listFiles 调用
tsc
以确保包含类型声明。即使 package.json 指定了 "types": "index.d.js"
,默认情况下也不包含类型声明文件。痛苦的方式:手动设置依赖于主包的虚拟包。主包发布后,升级虚拟包并尝试使用tsc