首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用KendoUI、TypeScript和DefinitelyTyped

使用KendoUI、TypeScript和DefinitelyTyped
EN

Stack Overflow用户
提问于 2014-04-11 06:51:23
回答 3查看 1.8K关注 0票数 0

我正在使用旧版本的KendoUI (v2013.2.716)和TypeScript (v0.9.5)。我想更新,但是所有的东西都坏了,而且我的最后期限很紧。将在稍后执行此操作。

无论如何,我正在使用DefinitelyTyped kendo.d.ts,在我尝试以下命令之前,一切都很好:

代码语言:javascript
复制
var grid = $('.k-grid').data('kendoGrid');
grid.dataSource.transport.options.read.url = newDataSource;
grid.dataSource.read();

这工作得很好,但Visual Studio不喜欢它。我得到了:

代码语言:javascript
复制
The property 'transport' does not exist on value of type 'kendo.data.DataSource'

我已经had issues like this before了,并且我非常确定我可以制作一个custom.d.ts文件来解决这个错误,但不确定如何做。有谁知道我如何创建一个变通方法?

EN

回答 3

Stack Overflow用户

发布于 2014-04-11 14:27:10

你可以通过简单地声明两次来“扩展”现有的类型接口,它们将被合并。

所以,这是:

代码语言:javascript
复制
interface A {
    propB: string;
}
interface A {
    propC: number;
}

将被编译器视为:

代码语言:javascript
复制
interface A {
    propB: string;
    propC: number;
}

在您的示例中,您可以添加自定义声明文件,并添加以下内容:

代码语言:javascript
复制
module kendo {
    interface data {
        interface DataSource {
            transport: any;
        }
    }
}

当然,您也可以添加用于传输的类型。

票数 1
EN

Stack Overflow用户

发布于 2014-04-11 06:59:42

我也遇到过类似的问题。大多数情况下,我通过将其转换为任何来修复它。

试试这个-

代码语言:javascript
复制
 (<any>grid.dataSource.transport).options.read.url = newDataSource; 

或者,你也可以试试这个-

代码语言:javascript
复制
(<kendo.data.DataSource>.grid.dataSource).transport.options.read.url = newDataSource; 

但是,第一个选项肯定会起作用!

希望,这很有帮助

票数 0
EN

Stack Overflow用户

发布于 2014-04-15 06:09:39

这不是一个特别优雅的答案,但以下是我在紧迫的最后期限内所做的:

grid.dataSource['transport'].options.read.url = newDataSource;

对我来说,这通常是不被建议的,因为你使用typescript的整个原因是为了维护类型安全,但是在第三方库的情况下,我会通过强制转换为any或使用上面的索引器语法来在这里和那里进行例外处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23000485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档