我正在尝试根据另一个值的类型来设置一个对象值的类型,我很好奇是否可行。鉴于:
{"id":"is_enabled","path":"admin/sso_saml","_elementType":"field"}
有没有办法在打字稿中做到这一点?只有将泛型传递给类型声明,我才能使它起作用。但是我知道在功能上可以推断出这一点。
答案 0 :(得分:1)
是否可以在打字稿中的对象中使用泛型?
是的。这是工作代码(您很接近):
export type KeyType = 'string' | 'number'
type ValueType = { string: string, number: number }
type TestObject<T extends KeyType> = {
key: T
value: ValueType[T]
}
const testA: TestObject<'string'> = { key: 'string', value: 'hello' } // should be ok
const testB: TestObject<'number'> = { key: 'number', value: 2 } // should be ok
const testC: TestObject<'string'> = { key: 'string', value: 2 } // Error: value needs to be string
在使用泛型作为类型注释时,您需要指定泛型,例如TestObject<'number'>