Не удается проверить неопределенность при использовании enum в качестве ключей интерфейса - PullRequest
0 голосов
/ 07 сентября 2018

Фрагмент кода:

enum FooEnum {
    MyKey = "my-key"
}

interface FooOption {
    [FooEnum.MyKey]?: string;
}

function FooFn(opts: FooOption) {
    const myKey: string = opts[FooEnum.MyKey] != null ? opts[FooEnum.MyKey] : "";
    console.info(`Hello, ${myKey}`);
}

Выдает следующее предупреждение:

[ts]Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'. const myKey: string

Несмотря на то, что я проверил, может ли мой параметр быть неопределенным, я все равно получаю сообщение об ошибке, типом является string | undefined. Как мне решить эту проблему?

Единственное решение, о котором я могу подумать:

function FooFn(opts: FooOption) {
    const tmpMyKey = opts[FooEnum.MyKey];
    const myKey: string = tmpMyKey != null ? tmpMyKey : "";
    console.info(`Hello, ${myKey}`);
}

, но очень неприятно каждый раз проверять подобное. Есть ли лучший способ?

...