TypeScript动态类型检查



我想知道如何在不使用变量的情况下动态检查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比一般情况更具体,所以特定键比更一般的键更可取。

相关内容

最新更新