強制香草JS對象和流的數據結構是容易的:更簡單的方法來執行類型不可變的數據結構?
type ExampleObjType = {
key1: number,
key2: string
};
const obj: ExampleObjType = {
key1: 123,
key2: '123'
};
看起來這需要不必要的大量的樣板以執行在不可變的類似結構:
type TestSpec = {
key1: number,
key2: string,
};
const TestRecord = Record({
key1: 0,
key2: '',
});
const record: TestSpec & Record<TestSpec> = new TestRecord({
key1: 123,
key2: '123',
});
此外,上述結構有一些主要缺陷:
- 強制默認值
- 在初始化時,只有訪問
理想我想能夠使用Immutable.Map
,像這樣的無效鍵無執法:
type TestSpec = Map<{key1: number, key2: number}>;
const testMap: TestSpec = Map({
key1: 123,
key2: '123',
});
然而,目前的實現只允許鍵和值打字類型。我可以使用諸如type Key = 'key1' | 'key2'
之類的東西來限制鍵的類型,但是我仍然不能明確地鍵入每個鍵的值。
有沒有辦法通過Immutable完成我在尋找的東西?對於真正的類型安全來說,這似乎是一個非常基礎的要求,特別是當用於Redux動作有效載荷時。