我有一个功能
.Select(g => new
{
Book = g.Key.Book,
Chapter = g.Key.Chapter,
MinTimesRead = g.Min(d => d.TimesRead),
Items = g.Select(i => i)
});
如果我将其称为T newText<T, U extends keyof T>(name: keyof T, value: T[U]){...}
,则类型应为{ one: Function, two: string }
一个,'one' | 'two'
为值。
这非常接近我想要的但是当我指定一个名称时,我希望该值是该键的类型。因此,如果我Function | string
,我希望将newText('one',
视为我唯一的价值选择,并且Function
应该抛出错误。
这在打字稿2.6中是否可行?
解决方案的完整用例
newText('two', () =>{})
答案 0 :(得分:1)
因此,如果我执行newText('one',我希望将Function视为我唯一的值选项,并且newText('two',()=&gt; {})应该抛出错误。
简单:
type T = { one: Function, two: string };
declare function newText<KEY extends keyof T>(name: KEY, value: T[KEY]): any;
newText('one', () => null); // Okay
newText('two', () => null); // Error
干杯