TypeScript中“set”函数的正确类型是什么?

fnvucqvd  于 2023-03-04  发布在  TypeScript
关注(0)|答案(3)|浏览(449)

我在TypeScript中有这样一个函数:

set parameter(value: string) {
  this._paremeter = value;
}

这个很好用,我想为了完整起见:让我们添加一个正确的类型,说明这个函数不返回任何结果,但是,没有一个是有效的:

set parameter(vale: string): void {}
set parameter(vale: string): never {}

我也试过这些,只是为了确认一下,但当然这些都不管用:

set parameter(vale: string): undefined {}
set parameter(vale: string): null {}

是否存在正确的类型,或者set-函数应该根本没有类型?

voase2hg

voase2hg1#

Setter不支持指定返回类型。
从(现已弃用的)语言规范:

  • 设置访问者:*

set * 属性名称 * ( * 绑定标识符或模式类型注解(可选)* ){ * 函数体 * }

new9mtju

new9mtju2#

从 typescript 文档
TypeScript支持getter/setter作为拦截对对象成员访问的一种方式,这为您提供了一种更细粒度的控制方式,以控制如何访问每个对象上的成员。
这里有一个集合的例子

set fullName(newName: string) {
        if (newName && newName.length > fullNameMaxLength) {
            throw new Error("fullName has a max length of " + fullNameMaxLength);
        }

        this._fullName = newName;
    }

总之,set方法不能返回类型,所以,第一种方法是正确的。

set parameter(value: string) {
  this._paremeter = value;
}
cotxawn7

cotxawn73#

“set”访问器不能具有Typescript语言中的返回类型注解。
如果激活了tslint,它将显示错误ts(1095)

相关问题