例如,我想在quote
类型中添加静态RegExp
方法:
RegExp.quote = (text: String) => { ... };
但是当我尝试这样做时,我收到以下错误:
属性'quote'在类型'{$ 1:string; $ 2:字符串; $ 3:字符串; $ 4:字符串; 5美元:字符串; 6美元:字符串; 7美元:字符串; 8美元:字符串; 9美元:字符串; lastMatch:string; (pattern:string,flags?:string):RegExp; new(pattern:string,flags?:string):RegExp; }”。
答案 0 :(得分:2)
恐怕只有这个丑陋的解决方案:
// add it
RegExp['quote'] = (whatev:any):any => { return whatev;};
// Use it
RegExp['quote']('asdf');
// The default behaviour is intact:
var foo = new RegExp('/asdf/');
我认为模块可以让它工作,但我已经证实它没有。
请参阅:https://stackoverflow.com/a/16824687/390330 和功能需要:https://typescript.codeplex.com/workitem/917
答案 1 :(得分:1)
请参阅issue on Codeplex - 如果问题被接受,您可以扩展界面。在此期间,您可以手动进行更改以创建自己的自定义lib.d.ts。
interface RegExpStatic {
quote(text: string) : string;
}
您现在可以添加和访问此属性,因为类型系统可以识别它。
答案 2 :(得分:0)
更新,请参阅我的其他答案。我认为以下内容可行,但不会
您可以使用模块扩展RegExp:
module RegExp{
export function quote(whatev){return whatev;}
}
RegExp.quote('foo');
基本上使用模块向现有实例添加静态属性。