我目前正在编写一个我无法修改的私有JavaScript文件的* d.ts文件。我目前正在尝试在界面中定义属性,该属性可以是字符串或函数:
var obj = {
href: function(data) { return "/page/" + data.id; }
}
OR
var obj = {
href: "page/list.html"
}
在查看typescript doc关于接口的follow example后,我不会让我将该函数定义为可选类型,如下所示:
interface IObj {
href: {
(...any)?: any;
string? ;
};
}
这甚至可能吗?或者我是以错误的方式接近这个?
答案 0 :(得分:3)
您真正需要的是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
}