3

今天我在阅读了@blorkfish 的博文后开始使用TypeScript

我从typescriptlang.org下载了 VS 插件,并通过 nuget 下载了最新的 ExtJS 定义

PM> Install-Package extjs.TypeScript.DefinitelyTyped

好的,让我们开始编写一个基本的 MVC 应用程序,如 blockpost 中所述:

编译时类型转换

利用强大的 TypeScript 优势(即类型安全)的唯一方法是使用编译时类型转换手动将这些配置块类型转换为正确的类型,如下所示:

Ext.application(
    <Ext_app_Application>{ 
        // Ext.application config block
        // now has intellisense and type casting
    } 
);

结束了

在此处输入图像描述

该错误表示 Ext_app_Application 没有定义

4

3 回答 3

2

只是一个附加信息:

您是否尝试过<Ext.app.IApplication>对最新版本的 ExtJS TypeScript 定义有效的原因。请注意,博客中使用的定义与您通过 nuget 获得的定义有所不同。

开发评论:

将配置块投射到适当的接口以启用代码提示。

于 2013-07-13T07:55:26.483 回答
2

我写的原始博客文章基于 Mike Aubury (zz9pa) 所做的出色工作,并于 2013 年 1 月发布。

2013 年 7 月左右,brian428 将他的 extjs.d.ts 文件提交给了 distinctlyTyped。

这两个 .d.ts 文件的差异解释了您遇到此错误的原因。
Mike 的 extjs 接口使用 _(下划线)分隔类名,如下所示:

interface Ext_AbstractComponent extends Ext_Base { ... }

brian428 的 extjs 接口在哪里使用 . (点)如下:

interface Ext.AbstractComponent extends Ext.Base { ... }

玩得开心

于 2013-09-04T13:16:16.910 回答
1

的签名Ext.application()说它接受一个名为configtype的可选参数any

Ext.Application(config?: any) : void;

所以你应该像这样传入你的对象:

/// <reference path="Scripts/typings/extjs/ExtJS.d.ts" />

Ext.application({
    name: 'SampleApp',
    appFolder: '/app/sampleapp',
    controllers: ['SampleController'],
    launch: () => {
        console.log('getting started');
    }
});
于 2013-07-12T09:12:28.633 回答