【发布时间】:2017-12-03 20:08:05
【问题描述】:
我在使用 TypeScript 和 Lodash 的输入 (@types/lodash) 时遇到了这个问题。
如果我在 TypeScript 的编译器选项中启用 strictNullChecks。下面的代码会报错。
/// <reference path="./node_modules/@types/lodash/index.d.ts" />
const foo = (myString?: string) => {
return _.defaultTo(myString, 'defaultString');
}
index.ts(4,28): 错误 TS2345: 类型参数 'string | undefined' 不能分配给“defaultString”类型的参数 |空 |不明确的'。 类型 'string' 不可分配给类型 '"defaultString" |空 |未定义'。
如果我理解正确,那是因为 _.defaultTo 期望第一个参数是 T | null | undefined 类型,而变量 myString 是可选字符串(即字符串或未定义)。
以上只是一个简单的演示案例,我当然可以使用三元运算符/if 语句来验证字符串。在现实世界的项目中,我一直在使用_.defaultTo 来处理不同的类型。
只是想知道是否有办法同时使用_.defaultTo 和strictNullChecks?
仅供参考,此处将 null 和 undefined 添加到 _defaultTo 方法中:https://github.com/DefinitelyTyped/DefinitelyTyped/pull/15895/files
【问题讨论】:
标签: typescript lodash typescript-typings