我在想;这样可能吗?
interface User {
name: string;
age: number;
}
// The syntax User['*'] doesn't exist, this is just an example
const user: User['*'] = 'Bob'; // No error
const user: User['*'] = 32; // No error
const user: User['*'] = true; // Error
我知道“或”(|
),但是如果User
接口具有很多类型化的属性,这会变得非常困难。
答案 0 :(得分:2)
您可以对keyof T
使用索引类型查询,以获取接口中所有可能值的并集:
interface User {
name: string;
age: number;
}
const userValue1: User[keyof User] = 'Bob'; // No error
const userValue2: User[keyof User] = 32; // No error
const userValue3: User[keyof User] = true; // Error
如果您经常使用此工具,则助手类型可能会有所帮助:
type ValueOf<T> = T[keyof T]