我想定义一个类型,其中所有属性都是只读的,看起来像key:string value:string,但'set'属性是一个函数。
我已经试过了:
type Attributes = {
readonly [key in Exclude<string, 'set'>]:string
} & {
readonly set: (attr:string, value:string) => void
}
我的问题是Exclude<string, 'set'>
是"简化的"。回到string
。有经验的人能解释一下TypeScript为什么这样做吗?一些建议如何实现一个类型,我只知道几个属性键(但可能有更多)可以帮助我。
感谢您的时间和回答!
目前在typescript中,不可能创建像"任何字符串除了…"这样的类型,Exclude<string, '...'>
总是导致string
。这只是我们现在要处理的typescript的一个限制。
无论如何,这个类型似乎是有效的
type Attributes = {
readonly [key: string]: string
} & {
readonly set: (attr:string, value:string) => void
}
你不能给一个没有set
属性的对象赋值这个属性必须是你在这里指定的函数,所以看起来你可以直接使用它