【发布时间】:2014-12-09 15:28:03
【问题描述】:
我正在尝试为此 String.format for JavaScript 实现创建一个 TypeScript 定义文件,但我很挣扎。
我还是 TypeScript 的新手,我已经阅读了很多关于如何创建定义的文章/sn-ps。我发现的最好的资源之一是 Steve Fenton 的博客文章Complex TypeScript Definitions Made Easy。我已按照建议的示例进行操作,但到目前为止还没有成功。
问题是因为外部 Javascript 向“String”添加了一个方法。 我尝试如下“声明” String 类:
declare class String {
declare function format(str: string, obj0: any, obj1?: any, obj2?: any): string;
}
这会导致错误:Duplicate identifier 'String'
我也尝试过使用接口来描述类型信息:
interface String {
format(str: string, obj0: any, obj1?: any, obj2?: any): string;
}
界面本身似乎还可以,但如果我尝试调用:
String.format("The {0} brown {1}!", "quick", "fox")
我收到错误The property 'format' does not exist on value of type '{ prototype: String; fromCharCode(...codes: number[]): string; (value?: any): string; new(value?: any): String; }'。
我假设这是因为 format 是静态方法(无论如何在 TypeScript 术语中),但被定义为接口上的实例方法(因为接口不能包含静态方法定义)。
我可能在这方面完全走错了方向,或者可能对 Javascript、TypeScript 或两者的某些元素有完全错误的理解。请问有人至少可以将我推向正确的方向吗?
【问题讨论】:
-
我使用打字稿。请参阅此链接。 stackoverflow.com/questions/20070158/…
标签: javascript string typescript