【发布时间】:2020-05-06 16:31:24
【问题描述】:
我正在使用不可变数据模型构建应用程序,但我遇到了以下死胡同:
我有一个存储为不可变的函数,如下例所示:
const f: Readonly<() => void> = () => {};
f();
调用f 时出现以下错误:
This expression is not callable.
Type 'Readonly<() => void>' has no call signatures. (2349)
我不明白 Readonly 转换了什么会产生这种效果。
转换回 mutable 似乎不是解决方案。这会产生同样的错误:
export type Mutable<T> = {
-readonly [K in keyof T]: T[K];
};
(f as Mutable<typeof f>)();
我希望了解此问题的根本原因,不一定要寻找解决方法,例如强制转换为确切的函数类型,或者不对函数应用 Readonly。
【问题讨论】:
-
将函数设为只读的预期目的是什么?您是否试图阻止其属性(例如
f.apply)被重新分配?
标签: typescript