WebStorm无法识别有效的TypeScript解构
我将WebStorm与TypeScript一起使用,在尝试使用参数解构定义方法的类型时遇到了一个障碍 这里提到()为了使用类型注释和分解模式,我们必须使用以下模式:WebStorm无法识别有效的TypeScript解构,typescript,syntax,ecmascript-6,webstorm,Typescript,Syntax,Ecmascript 6,Webstorm,我将WebStorm与TypeScript一起使用,在尝试使用参数解构定义方法的类型时遇到了一个障碍 这里提到()为了使用类型注释和分解模式,我们必须使用以下模式: function someFunc(data: any) { const { x, y } : { x: number, y: number } = data; } 这适用于我的TS文件,如下所示: export default class foo { private bar: any; private m
function someFunc(data: any) {
const { x, y } : { x: number, y: number } = data;
}
这适用于我的TS文件,如下所示:
export default class foo {
private bar: any;
private myMethod: ({paramToUse}: {paramToUse: string}) => void;
constructor() {
console.log('hi');
this.bar = "bar";
};
}
在WebStorm中,我在({paramuse}):
stating“)expected”之后看到一个语法错误,它导致文件其余部分出现语法问题,以至于无法使用。在VS代码或Sublime中,这不会突出显示为语法错误。如有任何建议,我们将不胜感激
({paramToUse}:{paramToUse:string})=>void
函数类型包含冗余信息,没有多大意义,这可能就是为什么这种语法在所有地方都不受支持的原因
在这里,函数参数是否被分解并不重要。分解特定于函数实现,但不是类型:
private myMethod: (param: {paramToUse: string}) => void = ({paramToUse}) => {};
我用的例子本可以更好。例如,如果我要在对象中传递两个属性,并且需要对它们进行分解,那么提供的解决方案似乎无法解决这一问题。在VS代码中工作的语法如下:
public myMethod:({paramToUse,secondParam}:{paramToUse:string,secondParam:string})=>void
则类型为public myMethod:(param:{paramToUse:string,secondParam:string})=>void代码>。同样,使用param
所发生的事情是特定于实现的。这不影响函数类型。您可以将其分解为函数参数,也可以在函数体中分解,或者根本不分解。