Typescript 是否可以设置默认的泛型类型?
是否可以根据另一个参数动态限制参数的类型Typescript 是否可以设置默认的泛型类型?,typescript,Typescript,是否可以根据另一个参数动态限制参数的类型 type Foo = { bar: string; baz: number; } let o: Foo; function setProperty(key: keyof Foo, value: Foo[keyof Foo]) { o[key] = value; } setProperty("bar", 55); // shouldn't be allowed setProperty("bar", "55"); // allo
type Foo = {
bar: string;
baz: number;
}
let o: Foo;
function setProperty(key: keyof Foo, value: Foo[keyof Foo]) {
o[key] = value;
}
setProperty("bar", 55); // shouldn't be allowed
setProperty("bar", "55"); // allowed
与泛型一起使用:
type Foo = {
bar: string;
baz: number;
}
let o: Foo;
function setProperty<P extends keyof Foo> (key: P, value: Foo[P]) {
o[key] = value;
}
setProperty("bar", 55); // Throws error
setProperty("bar", "55"); // allowed
类型Foo={
酒吧:字符串;
baz:数字;
}
让o:Foo;
函数setProperty(键:P,值:Foo[P]){
o[键]=值;
}
setProperty(“bar”,55);//抛出错误
setProperty(“bar”,“55”);//允许
为什么不使用泛型?如果可以使用泛型,也可以。我只是不想从消费者那里做setProperty