【发布时间】:2020-09-27 18:35:54
【问题描述】:
function isType(
value: any,
type: 'undefined'|'object'|'boolean'|'number'|'bigint'|'string'|'symbol'|'function'
): boolean {
return typeof value === type;
}
function getDefaultIfUndefined<T>(value: T|undefined, defaultValue: T): T
{
return isType(value, 'undefined') ? defaultValue : value;
}
TypeScript 抱怨 getDefaultIfUndefined() 的返回类型是 T|undefined 而不仅仅是 T。但它始终是 T,因为三元组确保如果 "value" 未定义,则返回 "defaultValue"。
TypeScript 写成这样是没有问题的:
function getDefaultIfUndefined<T>(value: T|undefined, defaultValue: T): T
{
return typeof value === 'undefined' ? defaultValue : value;
}
【问题讨论】:
标签: typescript