Mat*_*ner 8 javascript typescript visual-studio-code
当我在 JavaScript 或 TypeScript 中重命名变量时,VS Code 有时会在解构赋值中添加别名:
const { renamedProp: prop } = arg; // After rename
Run Code Online (Sandbox Code Playgroud)
或者它添加as了进口:
import { Foo as renamedFoo } from "./file"; // After rename
Run Code Online (Sandbox Code Playgroud)
为什么 VS Code 会这样做,我该如何禁用这种行为?例如,如果我prop在界面中重命名Foo以下代码:
export interface Foo {
prop: string;
}
function bar(arg: Foo) {
const { prop } = arg;
return prop;
}
Run Code Online (Sandbox Code Playgroud)
VS Code 将代码更改为:
export interface Foo {
renamedProp: string;
}
function bar(arg: Foo) {
const { renamedProp: prop } = arg;
return prop;
}
Run Code Online (Sandbox Code Playgroud)
我希望它是:
export interface Foo {
renamedProp: string;
}
function bar(arg: Foo) {
const { renamedProp } = arg;
return renamedProp;
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,VS Code 会尝试使重命名安全。这意味着保留现有的类型接口。在以下示例中,
export interface Foo {
prop: string;
}
function bar(arg: Foo) {
const { prop } = arg;
return { prop };
}
Run Code Online (Sandbox Code Playgroud)
如果我们重命名prop而不使用别名,隐式返回的类型bar将会改变。也许这种类型是用来满足另一个需要名为prop. 在这种情况下,在重命名时引入别名会保留现有的类型接口,从而确保代码继续按预期编译和工作
要禁用此行为,只需设置:
"javascript.preferences.useAliasesForRenames": false,
"typescript.preferences.useAliasesForRenames": false,
Run Code Online (Sandbox Code Playgroud)
只有在工作区中使用 TypeScript 3.4+ 时才支持这些设置(这是 VS Code 1.33+ 中的默认设置)
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |