javascript - Typescript - problem med index-signaturintersektion


Jag har följande typ:

type MyType = {
    ['x']?: string;
    ['y']?: number;
} & { [key: string]: string };

När jag skriver detta:

const a: MyType = {
    'x': 'str',
    'y': 5
}

Jag får ett fel (y är ett nummer medan en sträng förväntas) vilket är logiskt enligt indexsignaturen. Men när jag skriver så här:

const b: MyType = {};
b['x'] = 'str2';
b['y'] = 6

Det fungerar bra. Vad är skillnaden mellan de två? Ska det här ens fungera?

Relaterade artiklar