2015-10-06 1 views
0

Я использую машинопись в структуре Chromium Embedit (CEF).Машинопись, вызывающая функция, которая не известна TS, приводит к красной подчеркиванию

Теперь то, что я делаю, это то, что я регистрирую объект C# и вызываю его из Javascript в своем решении из машинописного текста.

Проблема, с которой я столкнулся, состоит в том, что поскольку функция и этот объект не существуют в вызове TypeScript, эта функция подчеркнута красным.

Могу ли я как-то избавиться от этого подчеркивания для этого вызова? Это подчеркивание приводит к игнорированию ошибок, которые мы не хотим.

+0

Вы можете создать свои собственные Определенно типизированных (.d.ts) файл, который будет содержать интерфейс вашего класса или просто передать ваш объект любому –

ответ

4

Теперь вопрос, что я столкнулся в том, что, так как функция и этот объект не существует в машинописном вызова этой функции красный подчеркнутый

Вы можете объявить любые глобальные/внешние переменные в файле декларации (.d.ts файл).

Например mylib.d.ts

declare var awesome:any; 

Использование theapp.ts:

awesome(); // No error! 

PS: Вы можете прочитать больше о температурах наружного воздуха в машинописном здесь https://basarat.gitbooks.io/typescript/content/docs/types/ambient/intro.html

+0

TY, это работает! Я столкнулся с еще одной проблемой. Я проверяю тип ввода какого-либо элемента, fe checkbox. Теперь я уверен, что у меня есть элемент, который является флажком, поэтому этот элемент должен иметь свойство checked. Но если я просто делаю 'element.checked', чем он работает, но проверяется красным подчеркнутым. Я думаю, что мне просто нужно перепечатать с «HTMLElement» на что-то вроде CheckboxElement, но не нашел ничего подходящего для этого преобразования. Как избавиться от этого? Я столкнулся с этим также в случае 'element.value' –

+0

любой идеи, как с этим справиться? –

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

 Смежные вопросы

  • Нет связанных вопросов^_^