鉴于此代码:
interface Foo{
one?: string;
two?: string;
}
type Foo2 = {
[P in keyof Foo]: number;
}
Run Code Online (Sandbox Code Playgroud)
我希望类型Foo2是{ one: number; two: number; } 但是,它似乎保持可选修饰符{ one?: number; two?: number; }
使用映射类型时是否可以删除可选修饰符?
我有一个看起来像这样的功能
let bcInst;
if(props.onBoundsChanged){
bcInst = kakao.maps.event.addListener(map, 'bounds_changed',()=>{
props.onBoundsChanged(map); //I get error here
})
}
Run Code Online (Sandbox Code Playgroud)
道具界面如下图
interface IMapProps{
mapId?: string;
longitude: number;
latitude: number;
level:number;
onBoundsChanged?:{
(map:any) : void
}
}
Run Code Online (Sandbox Code Playgroud)
即使我在 if 语句中检查 props.onBoundsChanged,我也会收到 TS2722:无法调用可能是“未定义”的对象。在我使用 props.onBoundsChanged 的位置出错。我该如何解决这个问题?