使用TypeScript的ExtJS,未捕获错误

时间:2014-02-12 10:56:31

标签: javascript extjs typescript

我正在尝试使用Sencha ExtJS的TypeScript:

/// <reference path="../ExtJS.d.ts" />

Ext.define("CompanyGridPanel", <Ext.grid.IPanel>{
    extend: "Ext.grid.Panel",

    config: {
        companyStore: null
    },

    initComponent: function () {
        this.myFunction(10, 52);

        return this.callParent(arguments);
    },

    myFunction : (a:number, b:Ext.IPanel, ...args) => {

    }
});

函数 MyFunction 接受Ext.IPanel类型的对象作为第二个参数,但是用数字调用。 TS编译器没有捕获此错误,但WebStorm IDE确实正确捕获它。

为什么TS没有抓住它以及如何解决?

使用ExtJS 4.2和TS 0.9.5.0。

1 个答案:

答案 0 :(得分:0)

TypeScript编译器将尝试根据函数调用推断出相关对象的类型(b:Ext.IPanel)。

考虑以下代码:TypeScript将推断变量foo是一个字符串,因为getValue()函数的返回值是一个字符串,因此var foo变为一个字符串。

在上面的示例中,this.myFunction(10,52)成功,因为编译器能够将Ext.IPanel与数字匹配,从而将b推断为数字。

class Test {
   constructor() {
      var foo = getValue();
   }
   getValue() {
      return "bar";
   }
}