创建一个从联合类型中删除 null 的函数签名
Creating a function signature that removes null from a union type
我刚刚开始转换我的所有代码以使用 strictNullChecks。我想要一个执行以下操作的函数:
function defaultValue<TUnionNull>(value: TUnionNull, default: TWithoutNull): TWithoutNUll{
return value == null ? default : value
}
function requiresNotNullString(): void
var name: string | null;
var checkedName: string = defaultValue(name, "Fred");
换句话说,如果函数的输入是 string | null
我希望 return 类型是 string
这可能吗?
怎么样:
function defaultValue<T>(value: T | null, defaultValue: T): T {
return value == null ? defaultValue : value
}
(因为default
不能用所以改为defaultValue
)
(example in playground由@Roaders提供)
我刚刚开始转换我的所有代码以使用 strictNullChecks。我想要一个执行以下操作的函数:
function defaultValue<TUnionNull>(value: TUnionNull, default: TWithoutNull): TWithoutNUll{
return value == null ? default : value
}
function requiresNotNullString(): void
var name: string | null;
var checkedName: string = defaultValue(name, "Fred");
换句话说,如果函数的输入是 string | null
我希望 return 类型是 string
这可能吗?
怎么样:
function defaultValue<T>(value: T | null, defaultValue: T): T {
return value == null ? defaultValue : value
}
(因为default
不能用所以改为defaultValue
)
(example in playground由@Roaders提供)