我想定義一個類型,它是遞歸本身喜歡這個,主要有:打字稿遞歸類型與索引
interface CSSProperties {
marginLeft?: string | number
[key: string]?: CSSProperties
}
不幸的是,typescript docs說:
While string index signatures are a powerful way to describe the 「dictionary」 pattern, they also enforce that all properties match their return type. This is because a string index declares that obj.property is also available as obj[「property」]. In the following example, name’s type does not match the string index’s type, and the type-checker gives an error:
這似乎說這是不可能在打字稿中表達的,這似乎是一個嚴重的限制。 Flow在這裏做了我認爲正確的事情,並假定marginLeft
不屬於索引規範。
這是可能的所有在TypeScript?另外,有沒有辦法指定一個字符串是任何字符串但一組字符串?這樣,我可以做大致類似的事情:
interface NestedCSSProperties: CSSProperties {
[P not in keyof CSSProperties]?: CSSProperties
}
感謝您的建議所有的往往過度看上去稍微更強大的替代品。不幸的是,我對建議的解決方法不感興趣,因爲它使得類型明顯不那麼健全。我打開了一個[問題](https://github.com/Microsoft/TypeScript/issues/15151),並建議以某種方式實現此目的。 –