1
export interface MapObj {
  (s: string): TaskDaylist
}

let map: MapObj = {};

我得到一个类型错误

类型 '{}' 不可分配给类型 '(s: string) => TaskDaylist'。类型“{}”不匹配签名“(s: string): TaskDaylist”。

我不能让它成为可选的?

  (s: string)?: TaskDaylist

还有另一种方法可以输入地图并用空对象实例化它吗?

4

1 回答 1

2

您可以为此使用类型断言

let map: MapObj = {} as MapObj;

或者简单地说:

let map = {} as MapObj;

操场上的代码


编辑

您拥有MapObj的类型是函数的类型,因此如下所示:

let map: MapObj = function (s: string) {
    return {};
};

如果您只想要一个在字符串(键)到 TaskDaylist(值)之间映射的对象,那么它应该如下所示:

interface MapObj {
    [s: string]: TaskDaylist;
}

有关它的更多信息,请参阅 Indexable Types

于 2017-08-08T14:40:32.070 回答