属性X的类型不兼容

时间:2018-07-12 22:46:52

标签: typescript interface

我刚刚开始玩Typescript,遇到了一个奇怪的问题。

我已经声明了这样的接口:

Location.d.ts

interface Location {
    lat: number;
    lng: number;
}

然后按如下方式使用此界面:

reducer.tsx

interface MapState extends State {
    locations: Location[];
}

现在,我正在尝试声明类型为MapState的变量,但出现错误:

  

类型...不可分配给类型'MapState'。属性“位置”的类型不兼容。类型...不可分配给类型'Location []'。类型...不可分配给“位置”类型。类型中缺少属性“哈希” ...

这是我的声明:

const initialState: MapState = {
    locations: [
        { lat: 33.488069, lng: -112.072972 }
    ]
};

如果我明确地投射了Location,那么它将起作用:

const initialState: MapState = {
    locations: [
        ({ lat: 33.488069, lng: -112.072972 } as Location)
    ]
};

但这太冗长了。我在这里想念东西吗?

1 个答案:

答案 0 :(得分:3)

  

类型中缺少属性“哈希”

这意味着发生错误的地方的Location不是您的Location类型-这是dom.d.ts

中定义的浏览器位置对象的类型

您可能没有将Location类型导入到该文件(reducer.tsx)中,或者还有其他原因导致编译器看不到它。