我想知道如何在不使用变量的情况下动态检查TypeScript中的类型。在这里我检查";特殊数据";为具有变量的SpecialType。没有变量我该怎么做?
interface Params {
[key in keyof something]: {
param: string
else: any
}
}
const somethingSpecial: SpecialType = {...special data}
const variable: Params = {
param1: {
param: 'some string',
else: 123 // some any type
},
param2: {
param: 'another string',
else: somethingSpecial // does not want it to be any
},
}
我试过这个:
else: {...wrong data} as SpecialType
// or
else: <SpecialType>{...wrong data}
这使得它有效,即使数据是错误的。这会将特殊数据解析为SpecialType。我不想让它解析,我想让它检查类型。
您可以将参数定义为
interface Params {
[key in keyof something]: {
param: string
else: any
},
param2: {
param: string
else: SpecialType
}
}
如果你不想编辑你的params类型,你可以使用交叉点类型,比如:
const variable: Params & { param2: {name: string, else: SpecialType} } = ...
这是因为在这种情况下,键param2比一般情况更具体,所以特定键比更一般的键更可取。