Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在TypeScript中使用ExtJS_Extjs_Typescript - Fatal编程技术网

在TypeScript中使用ExtJS

在TypeScript中使用ExtJS,extjs,typescript,Extjs,Typescript,今天,我在阅读了 我从typescriptlang.org下载了VS插件,并通过nuget下载了最新的ExtJS定义 PM>安装包extjs.TypeScript.DefinitelyTyped 好的,让我们开始编写一个基本的MVC应用程序,如blockpost中所述: 编译时类型转换 利用强大的TypeScript优势的唯一方法(即 安全)是手动将这些配置块类型转换为 使用编译时类型转换更正类型,如下所示: Ext.application( <Ext_app_Applicatio

今天,我在阅读了

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

PM>安装包extjs.TypeScript.DefinitelyTyped

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

编译时类型转换

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

Ext.application(
    <Ext_app_Application>{ 
        // Ext.application config block
        // now has intellisense and type casting
    } 
);
interface Ext.AbstractComponent extends Ext.Base { ... }
Ext.application(
{ 
//Ext.application配置块
//现在有智能感知和类型转换
} 
);
结果呢


错误表示没有Ext_app_应用程序的定义Ext.Application()的签名
表示它接受一个名为
config
的可选参数,类型为
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');
    }
});
//
外部应用程序({
名称:“SampleApp”,
appFolder:“/app/sampleapp”,
控制器:['SampleController'],
发布:()=>{
log('getting started');
}
});

只是一个附加信息:

您是否尝试了对最新版本的ExtJS TypeScript定义有效的原因。请注意,博客中使用的定义与您通过nuget获得的定义之间存在差异

开发人员评论:

将配置块强制转换到适当的接口以启用代码 暗示


我写的最初的博文是基于迈克·奥伯里(zz9pa)的出色作品,于2013年1月发表

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

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

interface Ext_AbstractComponent extends Ext_Base { ... }
brian428的extjs接口使用的位置。(dot)如下所示:

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

玩得开心

那么博客上的文字就不再正确了?这是关于Ext.define()/Ext.create()接受一个需要转换到适当类的对象,我认为要启用intelli sense?如果需要intellisense,应该更新ExtJS定义,为配置添加类型定义。如果你想的话,你也可以创建自己的配置定义,但是为了让事情顺利进行,就从这个例子开始吧。谢谢你的回答和解释!使用完全破坏了强类型的全部意义。我不推荐这种方法。这要看情况而定——如果您想要动态类型,这是完全必要的。如果您知道类型详细信息,您当然可以定义它以获得自动完成和类型检查。您从何处获得此“dev”注释?@JJR您可以找到此@JJR哦,不客气;)这只是作为额外的信息,而不是真正的答案。但我不应该对此抱怨;)谢谢你的解释!