【发布时间】:2021-09-15 20:56:43
【问题描述】:
如果我想定义一个元组或常量对象形状,我会使用as const。例如:
const arr = [{ a: 1 }] as const;
/* readonly [{
readonly a: 1;
}] */
但是,我不想要readonly,因为我会得到很多The type 'readonly ...' is 'readonly' and cannot be assigned to the mutable type '...'
我定义了一个“可变”泛型:
type Mutable<T> = {
-readonly [K in keyof T]: Mutable<T[K]>;
}
type Arr = Mutable<typeof arr>;
/* [Mutable<{
readonly a: 1;
}>] */
但是,TS 不会在 VS Code 的类型预览中递归地应用 Mutable。换句话说,我希望 VS Code 的类型预览显示:
/* [{
a: 1;
}] */
我认为 VS Code 不可能递归评估 Mutable,因为它可能太慢了。
有没有类似as const,但没有添加readonly?
【问题讨论】:
-
那么你想要什么做?如果你正在寻找
const arr: [{a: number}] = [{a: 1}];,那么就写吧。 -
如果有类似 const 的东西,但没有添加 readonly,那么这就是我想要的
-
所以你想得到
[{a: 1}]的类型? -
是的,但语法与
as const一样简单。我认为这是不可能的
标签: javascript typescript visual-studio-code