TypeScript/VSCode错误-从const数组构建键名称不显示正确的智能感知选项

os8fio9y  于 2023-11-20  发布在  TypeScript
关注(0)|答案(1)|浏览(143)

我在一个typescript文件中有以下函数:

  1. export function buildEnvTests<T extends ReadonlyArray<string>>(environments: T) {
  2. const r = {} as {[K in T[number] as `is${K}`]: () => boolean};
  3. for (let e of environments) {
  4. r[`is${e}`] = () => '' === e;
  5. }
  6. return r;
  7. }

字符串
如果我要将此函数导入到TS文件中,VS Code中的Intellisense会在返回值中正确报告派生的键。例如:

  1. import { buildEnvTests } from "./test.js";
  2. const x = ['A', 'B', 'C'] as const;
  3. const r = buildEnvTests(x);
  4. r. // Here, properties named isA, isB and isC show up as expected.


但是,如果我在JavaScript文件中执行相同的操作,则不会得到任何建议:

  1. import { buildEnvTests } from "./test.js";
  2. const x = ['A', 'B', 'C'];
  3. const r = buildEnvTests(x);
  4. r. // Here: No Intellisense.

l2osamch

l2osamch1#

你可以这样定义函数

  1. export function buildEnvTests<T extends string>(environments: ReadonlyArray<T>) {
  2. const r = {} as Record<`is${T}`, () => boolean>;
  3. for (let e of environments) {
  4. r[`is${e}`] = () => '' === e;
  5. }
  6. return r;
  7. }

字符串
TS Play

相关问题