我有一个打字稿界面,我想将函数参数对象限制为仅具有App
接口的属性,因为我尝试使用Record
和普通{}
(对象)类型,但没有用。
interface App {
a:'a',
b: 2,
c?:'c'
};
这是我的界面外观。
function func(filter: Record<keyof App ,unknown>){
};
func({a:'a'});
这是我尝试使用Record
的方式,但这给了我错误:
'{a:string;类型的参数}'不能分配给'Record <“ a”类型的参数| “ b” | “ c”,未知>'。 输入'{a:string; }'缺少类型'Record <“ a”的以下属性| “ b” | “ c”,未知>':b,c(2345
function func(filter: {[K in keyof App]: unknown}){
}
func({a:'a'});
这给了我
'{a:string;类型的参数}'不可分配给类型'{a的参数;未知; b:未知; c ?:未知; }'。 类型'{a:string;类型中缺少属性'b'。 }”,但类型为“ {a:未知; b:未知; c ?:未知; }'
这是可以理解的,因为in
运算符希望传递所有键,但是我如何创建一种类型,可以限制filter
对象键为接口App的属性,但不必这样做我需要发送所有属性。如果可以的话,是否有可能在打字稿中实现这样的目标?