typescript :编译后,返回的打字错误

j2cgzkjk  于 2023-03-24  发布在  TypeScript
关注(0)|答案(1)|浏览(130)

为什么选择我的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
}
nx7onnlm

nx7onnlm1#

这是因为您没有启用strictNullChecks。从该选项的文档中:
strictNullChecksfalse时,nullundefined实际上被语言忽略。这可能会导致运行时出现意外错误。
strictNullCheckstrue时,nullundefined有它们自己不同的类型,如果你试图在需要具体值的地方使用它们,你会得到一个类型错误。
至少添加:

"strictNullChecks": true,

到您的tsconfig.json(尽管我推荐所有的strict标志,通过"strict": true)。

相关问题