【发布时间】:2016-07-23 00:31:53
【问题描述】:
我在 Typescript 中有以下定义
**sample.d.ts**
declare namespace Sample {
class Widget {
name(): string; // gets the name
name(name: string): void; // sets the name
}
}
当我创建以下派生类型时,我没有收到任何警告:
export class BarWidget extends Sample.Widget {
public name(): string {
return '';
}
}
但是,当我创建以下类型时,我收到了 Typescript 错误:
export class FooWidget extends Sample.Widget {
public name(name: string): void {
}
}
错误信息是:
类“FooWidget”错误地扩展了基类“Widget”。种类 属性“名称”不兼容。类型 '(name: string) => void' 是 不可分配给类型 '{ (): string; (名称: 字符串): void;}'
更新:
这个问题与对 kendo.ui 等库的支持有关:
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/kendo-ui/kendo-ui.d.ts#L3373
在该代码文件中,需要使用以下语法设置和获取 DropDownList 的 value 属性:
let foo = dd.value();
dd.value('new value');
我的最终解决方案是将 kendo.ui.d.ts 中的定义更改为:
declare namespace Sample {
class Widget {
name(name?: string):string
}
}
【问题讨论】:
标签: typescript kendo-ui