by Anthony Fu @antfu
lodash の get 関数は JavaScript でネストした値にアクセスする際にとても便利です。しかし、TypeScript でこのような関数を使うと型情報が失われてしまいます。
TypeScript4.1 の機能であるTemplate Literal Typesを使うと、get
の適切な型付けが可能となります。
これを実装できるでしょうか?
例えば、
type Data = {
foo: {
bar: {
value: 'foobar';
count: 6;
};
included: true;
};
hello: 'world';
};
type A = Get<Data, 'hello'>; // 'world'
type B = Get<Data, 'foo.bar.count'>; // 6
type C = Get<Data, 'foo.bar'>; // { value: 'foobar', count: 6 }
この課題では、配列へのアクセスは必要ありません。