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

我将WebStorm与TypeScript一起使用,在尝试使用参数解构定义方法的类型时遇到了一个障碍

这里提到()为了使用类型注释和分解模式,我们必须使用以下模式:

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
所发生的事情是特定于实现的。这不影响函数类型。您可以将其分解为函数参数,也可以在函数体中分解,或者根本不分解。