【发布时间】:2021-09-19 01:04:01
【问题描述】:
我有一个可以返回几种不同类型的函数,我想使用参数指定返回:
type returnTypes = 'string' | 'object';
function getValue(returnType: returnTypes): string | Record<string, string> {
if(returnType === 'object') {
return { my: 'return value' }
}
return 'my return value';
}
interface IData {
myObjectValue: Record<string, string>;
myStringValue: string;
}
const data: IData = {
myObjectValue: getValue('object'),
myStringValue: getValue('string'),
}
data 的分配给我带来了以下错误:
键入'字符串 | Record
' 不可分配给类型 'Record '。 类型 'string' 不可分配给类型 'Record '。
键入'字符串 | Record
' 不可分配给类型 '细绳'。类型 'Record ' 不可分配给类型 '字符串'
大概是因为 TypeScript 认为 getValue 的返回值比我的接口中定义的类型要宽。
如何根据我的 returnType 参数指示 TypeScript,我将收到两种返回类型中的哪一种?
(或者是否有更规范的方式来做到这一点,例如,只是分成功能,如果是这样的话/如何?
【问题讨论】:
-
我不认为你想要做的事情是可能的,因为打字系统纯粹是一个编译时系统,没有运行时影响。仅在运行时测试
returnType是什么。
标签: javascript typescript types