const TYPED = { TEST: 'test', BAD: 'bad', YES: 'yes' } as const type Types = typeof TYPED[keyof typeof TYPED] const Test = (id: number, target: Types) => { console.log(target) } Test(8, undefined) // undefinedが指定出来てしまう
enumライクのunion型で、undefinedが型を突破するケースがあります。
引数を二つにすると突破できるのですが、コンポーネント間で渡すと一つでも突破できていたりします。
この場合、targetには'test'か'bad'か'yes'しか入らない認識ですが、何が間違っているのでしょうか?
> enumライクのunion型で、undefinedが型を突破するケースがあります。
ご提示のケースで再現しません。
https://www.typescriptlang.org/play?#code/MYewdgzgLgBAKgTQAoFEAiMC8MDeAoGQ+FAZTgC4YByKAU2ioBoCiAhAQTUqoCMBDACZMWhBKW4BPelTwBfGHwgxQkKHjxQJAB1rxt9LDE06QAM3jJ0AbQDWtCWaP7HiVGgC66ldHj1Y2AAoASwFKMABXAFseWgAnRiM+WIBzWihKOH0IAEosAD5cEWVwCBAAG1oAOjKQZICoJNSobLl1OD8AgA4E8LABWlMgsFoBXIB6MZhe-sHhgUAZBkBwY0As7UAvxUBTc0AzBkB1BkA-BkAxBiA
私も同じサイトで試してますが、なぜでしょうね。。
ちなみに引数を逆にするとどうなりますか?
画像を追加しました。
> ちなみに引数を逆にするとどうなりますか?
(もはやTypesも関係なさそうな状況ですが)逆では再現しました。
回答1件
あなたの回答
tips
プレビュー