type Product = {
name: string;
price: number;
}
// Utility Type A
type Keys<T> = keyof T & string;
// Utility Type A without "& string"
type Keys<T> = keyof T & string;
type KeysOfProduct = Keys<Product>
在上述条件下,使用效用类型A或不使用“& string”的效用类型A有何区别
type Product = {
name: string;
price: number;
}
// Utility Type A
type Keys<T> = keyof T & string;
// Utility Type A without "& string"
type Keys<T> = keyof T & string;
type KeysOfProduct = Keys<Product>
在上述条件下,使用效用类型A或不使用“& string”的效用类型A有何区别
2条答案
按热度按时间tnkciper1#
& string
用于消除对象中任何非字符串的键。换句话说,它去掉了数字和符号。您的Product
类型没有这些键,但不同的对象可能有。例如:
Playground链接
41zrol4v2#
无任何结果。
& string
在本例中产生了有效的空操作。由于Product
的 keys 是字符串常量(name
,price
),因此将常规string
类型与它们相交只会产生一个仍然表示字符串常量name
和price
的类型。如果你想允许松散的字符串和强类型的字符串,你可以用
keyof T | string
来代替。