打字稿getter / setter重载
Posted
技术标签:
【中文标题】打字稿getter / setter重载【英文标题】:typescript getter / setter overload 【发布时间】:2016-04-07 23:48:38 【问题描述】:有没有办法重载 typescript getter / setter?
我知道 typescript 提供 function overloading 所以我想出了这样的东西:
public get stringOrNumber(): string return this._stringOrNumber;
public set stringOrNumber(value: number);
public set stringOrNumber(value: string)
if(typeof stringOrNumber == 'number')
this._stringOrNumber = value.toString();
else
this._stringOrNumber = value;
但不幸的是,这不起作用 =)
【问题讨论】:
【参考方案1】:你的意思是这样的吗?
class A
protected _stringOrNumber: string|number;
public get stringOrNumber(): string|number
return this._stringOrNumber;
public set stringOrNumber(value: string|number)
if(typeof this.stringOrNumber === 'number')
this._stringOrNumber = value.toString();
else
this._stringOrNumber = value;
[Playground]
【讨论】:
嗨马丁,这绝对是一个改进。但我更希望受保护的属性和 getter 只代表一个字符串。只有二传手应该有一个数字重载。但后来我得到一个错误,因为 getter 和 setter 必须具有相同的类型:/ 有一个已解决的问题:github.com/Microsoft/TypeScript/issues/2521 (github.com/Microsoft/TypeScript/issues/4087) 不幸的是,当前的行为是设计使然。 谢谢,所以您的解决方案是目前的解决方案。即使我不喜欢一个属性有多种类型的事实。以上是关于打字稿getter / setter重载的主要内容,如果未能解决你的问题,请参考以下文章