我正在使用旧版本的KendoUI (v2013.2.716)和TypeScript (v0.9.5)。我想更新,但是所有的东西都坏了,而且我的最后期限很紧。将在稍后执行此操作。
无论如何,我正在使用DefinitelyTyped kendo.d.ts,在我尝试以下命令之前,一切都很好:
var grid = $('.k-grid').data('kendoGrid');
grid.dataSource.transport.options.read.url = newDataSource;
grid.dataSource.read();这工作得很好,但Visual Studio不喜欢它。我得到了:
The property 'transport' does not exist on value of type 'kendo.data.DataSource'我已经had issues like this before了,并且我非常确定我可以制作一个custom.d.ts文件来解决这个错误,但不确定如何做。有谁知道我如何创建一个变通方法?
发布于 2014-04-11 14:27:10
你可以通过简单地声明两次来“扩展”现有的类型接口,它们将被合并。
所以,这是:
interface A {
propB: string;
}
interface A {
propC: number;
}将被编译器视为:
interface A {
propB: string;
propC: number;
}在您的示例中,您可以添加自定义声明文件,并添加以下内容:
module kendo {
interface data {
interface DataSource {
transport: any;
}
}
}当然,您也可以添加用于传输的类型。
发布于 2014-04-11 06:59:42
我也遇到过类似的问题。大多数情况下,我通过将其转换为任何来修复它。
试试这个-
(<any>grid.dataSource.transport).options.read.url = newDataSource; 或者,你也可以试试这个-
(<kendo.data.DataSource>.grid.dataSource).transport.options.read.url = newDataSource; 但是,第一个选项肯定会起作用!
希望,这很有帮助
发布于 2014-04-15 06:09:39
这不是一个特别优雅的答案,但以下是我在紧迫的最后期限内所做的:
grid.dataSource['transport'].options.read.url = newDataSource;
对我来说,这通常是不被建议的,因为你使用typescript的整个原因是为了维护类型安全,但是在第三方库的情况下,我会通过强制转换为any或使用上面的索引器语法来在这里和那里进行例外处理。
https://stackoverflow.com/questions/23000485
复制相似问题