使用vanilla JS对象和流强制执行数据结构很容易:
type ExampleObjType = {
key1: number,
key2: string
};
const obj: ExampleObjType = {
key1: 123,
key2: '123'
};
Run Code Online (Sandbox Code Playgroud)
看起来这需要一个不必要的大量样板来在Immutable中强制执行类似的结构:
type TestSpec = {
key1: number,
key2: string,
};
const TestRecord = Record({
key1: 0,
key2: '',
});
const record: TestSpec & Record<TestSpec> = new TestRecord({
key1: 123,
key2: '123',
});
Run Code Online (Sandbox Code Playgroud)
此外,上述结构有一些主要缺点:
理想情况下我可以使用Immutable.Map
,像这样:
type TestSpec = Map<{key1: number, key2: number}>;
const testMap: TestSpec = Map({
key1: 123,
key2: '123',
});
Run Code Online (Sandbox Code Playgroud)
但是,当前实现仅允许键入键和值类型.我可以使用像hokey这样的东西约束键类型type Key = …