代码之家  ›  专栏  ›  技术社区  ›  Matt Bierner

在JavaScript或TypeScript中重命名时,阻止VS代码在非结构化赋值中添加“as”或别名

  •  0
  • Matt Bierner  · 技术社区  · 6 年前

    const { renamedProp: prop } = arg; // After rename
    

    as 在进口方面:

    import { Foo as renamedFoo } from "./file"; // After rename
    

    prop 接口中 Foo 对于以下代码:

    export interface Foo {
        prop: string;
    }
    
    function bar(arg: Foo) {
        const { prop } = arg;
        return prop;
    }
    

    VS代码将代码更改为:

    export interface Foo {
        renamedProp: string;
    }
    
    function bar(arg: Foo) {
        const { renamedProp: prop } = arg;
        return prop;
    }
    

    我希望它是:

    export interface Foo {
        renamedProp: string;
    }
    
    function bar(arg: Foo) {
        const { renamedProp } = arg;
        return renamedProp;
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Matt Bierner    6 年前

    export interface Foo {
        prop: string; 
    }
    
    function bar(arg: Foo) {
        const { prop } = arg; 
        return { prop };
    }
    

    如果我们重新命名 prop 在不使用别名的情况下,隐式返回 bar 会改变的。可能这个类型是用来满足另一个接口,该接口需要一个名为 道具 . 在这种情况下,在重命名时引入别名可以保留现有的类型接口,从而确保代码继续编译并按预期工作

    "javascript.preferences.renameShorthandProperties": false,
    "typescript.preferences.renameShorthandProperties": false,
    

    只有在工作区中使用TypeScript 3.4+时才支持这些设置(这是VS代码1.33中的默认设置)