#typescript
#typescript
Вопрос:
Я хочу иметь возможность использовать такой тип:
export interface NodesState {
attr1: number;
attr2: number;
attr3: number;
}
И предоставить пользователю возможность использовать пространство имен типа.
Так что это законно:
{
namespace1: {
attr1: 100,
attr2: 150,
attr3: 200
},
namespace2: {
attr1: 300,
attr2: 400
}
}
Но она также легальна без пространств имен:
{
attr1: 200,
attr2: 100,
attr3: 200
}
Я пробовал это:
export type MakeState<T> = T amp; {
[key: string]?: Partial<T>
}
Но это недопустимый typescript.
Возможно ли то, что я пытаюсь сделать?
Ответ №1:
Если я правильно понимаю, это то, что вы ищете:
type MakeState<T> = T amp; { [index: string]: T }
Использование:
declare const state: MakeState<NodesState>;
state.attr1; // `number`
state["foo"] // `NodesState`