打字稿混合类型
Typescript hybrid type
我目前正在为我无法修改的私有 JavaScript 文件编写一个 *d.ts 文件。我目前正在尝试在可以是 string 或 function:[=14= 的接口中定义 属性 ]
var obj = {
href: function(data) { return "/page/" + data.id; }
}
或
var obj = {
href: "page/list.html"
}
查看 typescript doc about interfaces I came across the follow example 但它不允许我将函数定义为可选类型,如下所示:
interface IObj {
href: {
(...any)?: any;
string? ;
};
}
这可能吗?还是我处理方法不对?
您真正要寻找的是 Union
类型(用 |
表示)。对于您的情况:
interface IObj {
href: string | { (...any): any };
};
var obj: IObj = {
href: "page/list.html"
}
var obj: IObj = {
href: function (data) { return "/page/" + data.id; }
}
// ERROR
var obj: IObj = {
href: 123
}
我目前正在为我无法修改的私有 JavaScript 文件编写一个 *d.ts 文件。我目前正在尝试在可以是 string 或 function:[=14= 的接口中定义 属性 ]
var obj = {
href: function(data) { return "/page/" + data.id; }
}
或
var obj = {
href: "page/list.html"
}
查看 typescript doc about interfaces I came across the follow example 但它不允许我将函数定义为可选类型,如下所示:
interface IObj {
href: {
(...any)?: any;
string? ;
};
}
这可能吗?还是我处理方法不对?
您真正要寻找的是 Union
类型(用 |
表示)。对于您的情况:
interface IObj {
href: string | { (...any): any };
};
var obj: IObj = {
href: "page/list.html"
}
var obj: IObj = {
href: function (data) { return "/page/" + data.id; }
}
// ERROR
var obj: IObj = {
href: 123
}