泛型:参数列表的接口

时间:2017-05-11 06:48:04

标签: typescript

在不传递对象的情况下是否可以使用此伪代码?

interface IArgs {
    name: string;
    age: number
}

function getInfo<T>(...T) {
    return ...;
}

getInfo<IArgs>("Bob", 50); // OK
getInfo<IArgs>("Bob"); // Error: parameter "age" is missing

2 个答案:

答案 0 :(得分:0)

我不认为...T可以使用类型检查控件。为什么你不使用简单:

function getInfo<T>(args: T[]) // if you need to pass an array
{
    return null;
}

function getInfo<T>(arg: T) // for just simple argument
{
    return null;
}

然后您将收到正确的编译时验证消息,例如:

getInfo<IArgs>({ name: "Bob" }); // Error: property "age" is missing

答案 1 :(得分:0)

也许用这种方式声明你的界面:

interface IArgs {
    name: string;
    age?: number;
}

?使该属性可选。