2013-07-12 56 views
3

今天,我開始閱讀打字稿後blogpost@blorkfish在打字稿使用ExtJS的

我下載的插件VS從typescriptlang.org並通過的NuGet了最新的ExtJS的定義

PM> Install-包extjs.TypeScript.DefinitelyTyped

好的,讓我們開始寫一個基本的MVC應用程序,如在blockpost中所述:

編譯時間類型鑄造

利用強大打字稿益處的唯一方法(即鍵入 安全性)是通過使用編譯時間類型鑄造如下手動鍵入鑄這些配置塊到 正確類型:

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

從而結束

enter image description here

錯誤說沒有Ext_app_Application的定義

回答

2

只是一個附加信息:

您是否嘗試過<Ext.app.IApplication>原因是適用於最新版本的ExtJS TypeScript定義。請注意,博客中使用的定義與您通過nuget獲得的定義有不同之處。

dev的評論:

角色配置塊到適當的接口,以使代碼 提示。

+0

你從哪裏得到這個'dev'評論? – JJR

+0

@JJR你可以找到這個[這裏](https://github.com/brian428/ext-typescript-generator) – sra

+0

Yesss,工作!謝謝!!! – JJR

1

Ext.application()的簽名表示它接受一個可選的參數命名any類型的config

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'); 
    } 
}); 
+0

所以後來在博客寫作不再是正確的嗎?這是關於該Ext.define()/ Ext.create()接受一個對象,需要被轉換到適當的類,我認爲啓用智能感? – JJR

+0

如果需要智能感知,則應更新ExtJS定義以添加配置的類型定義。如果你願意,你也可以創建你自己的配置定義 - 但爲了讓事情順利進行,從這個例子開始。 – Fenton

+1

好的,我會接受你的建議。謝謝你的回答和解釋! – JJR

2

,我寫的是基於由Mike Aubury(zz9pa)所做的出色工作,並發表在一月原來的博客文章2013年

圍繞2013年7月brian428提交了他的extjs.d.ts文件DefinitelyTyped。

這兩個.d.ts文件的差異解釋了爲什麼你有這個錯誤。
邁克的ExtJS的接口使用下劃線(_)分隔的類名稱如下:

interface Ext_AbstractComponent extends Ext_Base { ... } 

凡brian428的ExtJS的接口使用。(點)如下:

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

玩得開心

+0

謝謝你的解釋! – JJR

+0

這是正確的? –