我刚刚开始玩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)
]
};
但这太冗长了。我在这里想念东西吗?
答案 0 :(得分:3)
类型中缺少属性“哈希”
这意味着发生错误的地方的Location
不是您的Location
类型-这是dom.d.ts
您可能没有将Location
类型导入到该文件(reducer.tsx
)中,或者还有其他原因导致编译器看不到它。