TypeScript中set访问器函数的正确类型该如何定义?
TypeScript Set访问器无需指定返回类型
其实你不用纠结这个啦——TypeScript里的set访问器根本不允许显式指定返回类型,也完全不需要加。
咱们来掰扯清楚原因:
- 首先,JavaScript的setter语法本质就是为赋值操作设计的(比如你写
obj.parameter = "bar"),语言层面就规定了它不会返回任何值,调用者也不会去接收setter的返回结果。 - TypeScript严格遵循JS的这个规范,所以不管你尝试给setter加
void、never、undefined还是null作为返回类型,编译器都会直接报错,这是语法层面的限制。 - 你最开始写的
set parameter(value: string) { this._parameter = value; }就是完全正确的写法,TypeScript会自动识别它的返回行为,不需要额外加任何返回类型注解。
顺便提一句:哪怕你偷偷在setter里写了return语句(比如return 123),不仅调用时拿不到这个值,TypeScript还会提示你“setter不能返回值”的错误,进一步说明setter的返回逻辑是被语言严格约束的。
内容的提问来源于stack exchange,提问作者lampshade
相关产品推荐
相关产品推荐

