TypeScriptconst和constwithasconst

据我所知,TypeScript 将const string变量视为一个不可变的类型变量,只有该值而没有其他可能的值。我一直认为增加as const它是多余的。

为什么我在示例的第二部分得到以下内容?

“字符串”类型的参数不能分配给类型参数...

例子:

declare function each<T extends [any] | any[]>(cases: ReadonlyArray<T>): (name: string, fn: (...args: T) => any, timeout?: number) => void;

const foo1 = 'FOO' as const;
const bar1 = 'BAR' as const;

declare function action1(value: typeof foo1 | typeof bar1): void;

each([
  [foo1],
])('test name', (value) => {
  // okay
  action1(value);
});

const foo2 = 'FOO';
const bar2 = 'BAR';

declare function action2(value: typeof foo2 | typeof bar2): void;

each([
  [foo2],
])('test name', (value) => {
  // Argument of type 'string' is not assignable to parameter of type '"FOO" | "BAR"'.(2345)
  action2(value);
});

上面的游乐场示例在这里。

以上是TypeScriptconst和constwithasconst的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>