打字机,TS不知道的调用函数导致红色下划线

时间:2015-10-06 05:56:36

标签: c# function typescript

我在Chromium Embedit框架(CEF)中使用typescript。

现在我正在做的是我正在注册C#对象并在我的解决方案中使用Javascript调用它。

我面临的问题是,由于函数和此对象在TypeScript调用中不存在,因此该函数带有红色下划线。

我可以以某种方式摆脱这个呼叫的下划线吗?这下划线会导致忽略错误,这不是我们想要的。

2 个答案:

答案 0 :(得分:4)

  

现在我面临的问题是,由于函数和此对象在TypeScript调用中不存在,因此该函数带有红色下划线

您可以在声明文件(.d.ts文件)中声明任何全局/外部变量。

E.g mylib.d.ts

declare var awesome:any;

用法theapp.ts

awesome(); // No error!

PS:您可以在https://basarat.gitbooks.io/typescript/content/docs/types/ambient/intro.html

中阅读有关TypeScript氛围的更多信息

答案 1 :(得分:0)

我会这样说 - 有an example in the playground

首先是问题

// plain object
var obj = {};
// TS is doing the best for us. 
//  it informs about the issues related to
//  unknown properties and methods on a type <any>
obj.Result = obj.ReLoad(obj.IdProperty);

介绍界面

module MyNamespace {

    export interface IObject {
        IdProperty: number;
        Result: string;
        ReLoad: (id: number) => string;     
    }
}

解决方案:

// I. Declare type, and implement interface

// if we can declare a type
var obj1: MyNamespace.IObject;

// and later create or get that object
export class MyObj implements MyNamespace.IObject{
    IdProperty: number;
    Result: string;
    ReLoad = (id: number) => {return id.toString()};    
}

// now we get the implementation
obj1 = new MyObj();

// TS knows what could do with the obj2
// of type
obj1.Result = obj1.ReLoad(obj1.IdProperty);

// II. ASSERT - let TS know what is the type behind

// Assert - say to TS:
// I know that this object is of the expected type
var obj2 = <MyNamespace.IObject>obj;

// now TS is happy to trust that tese properties exist
obj2.Result = obj2.ReLoad(obj2.IdProperty);

检查here