gpt4 book ai didi

typescript - 使 lodash typings 的 defaultTo 方法与 TypeScript 编译器的 strictNullChecks 兼容

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:19 26 4
gpt4 key购买 nike

我在使用 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): error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type '"defaultString" | null | undefined'. Type 'string' is not assignable to type '"defaultString" | null | undefined'.

如果我没理解错的话,那是因为 _.defaultTo 期望第一个参数是 T | 的类型空 | undefined,而变量 myString 是可选字符串(即字符串或未定义)。

以上只是一个简单的演示案例,我当然可以使用三元运算符/if 语句来验证字符串。在实际项目中,我一直在为不同的类型使用 _.defaultTo

只是想知道是否有办法同时使用_.defaultTostrictNullChecks

仅供引用,null 和 undefined 已添加到此处的 _defaultTo 方法:https://github.com/DefinitelyTyped/DefinitelyTyped/pull/15895/files

最佳答案

看起来像是 TypeScript 中的一个错误 - 它无法找到 valuedefaultValue 的通用类型,而只是将 defaultValue 类型用于 T 如果 defaultTo 声明为

defaultTo<T>(value: T | null | undefined, defaultValue: T): T;

解决方法是允许第二个参数为 undefined(null 也可以):

defaultTo<T>(value: T | null | undefined, defaultValue: T | undefined): T | undefined;

关于typescript - 使 lodash typings 的 defaultTo 方法与 TypeScript 编译器的 strictNullChecks 兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44836721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com