为什么选择我的index.ts
export const isNullOrUndefined = (value: any): value is null | undefined => {
return value === null || value === undefined;
};
被转换为index.d.ts(只有值为空)
export declare const isNullOrUndefined: (value: any) => value is null;
而不是(值为空|未定义)
export declare const isNullOrUndefined: (value: any) => value is null | undefined;
这是typescript 4.9.5上的tsconfig文件
{
"compilerOptions": {
"incremental": false,
"target": "es2019",
"outDir": "build",
"rootDir": "src",
"moduleResolution": "node",
"module": "commonjs",
"declaration": true,
"inlineSourceMap": false,
"esModuleInterop": true,
"resolveJsonModule": true,
"removeComments": false,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"traceResolution": false,
"listEmittedFiles": false,
"listFiles": false,
"pretty": true,
"lib": ["es2019", "dom"],
"types": ["node"],
"typeRoots": ["node_modules/@types", "src/types"]
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules/**"],
"compileOnSave": false
}
1条答案
按热度按时间nx7onnlm1#
这是因为您没有启用
strictNullChecks
。从该选项的文档中:当
strictNullChecks
是false
时,null
和undefined
实际上被语言忽略。这可能会导致运行时出现意外错误。当
strictNullChecks
是true
时,null
和undefined
有它们自己不同的类型,如果你试图在需要具体值的地方使用它们,你会得到一个类型错误。至少添加:
到您的
tsconfig.json
(尽管我推荐所有的strict
标志,通过"strict": true
)。