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

问题描述 投票:0回答:1

当我在JavaScript或TypeScript中重命名变量时,VS Code有时会在析构化的赋值中添加别名:

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

或者它在进口中添加as

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

为什么VS Code会这样做?如何禁用此行为?例如,如果我在接口prop中重命名Foo以获取以下代码:

export interface Foo {
    prop: string;
}

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

VS Code将代码更改为:

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;
}
javascript typescript visual-studio-code
1个回答
0
投票

默认情况下,VS Code尝试使重命名安全。这意味着保留现有的类型接口。在以下示例中,

export interface Foo {
    prop: string; 
}

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

如果我们在不使用别名的情况下重命名prop,隐式返回的bar类型将会改变。也许这种类型用于满足另一个需要名为prop的属性的接口。在这种情况下,在重命名上引入别名会保留现有的类型接口,这样可以确保代码继续编译并按预期工作

要禁用此行为,只需设置:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.