2017-02-06 4 views
0

Я создаю проект в машинописном формате с использованием Atom в качестве текстового редактора. У меня установлен atom-typescript, который автоматически компилирует мой код на JavaScript.Тип машинописных включает методы расширения

То, что я пытаюсь сделать, это определить новый метод расширения для строки типа, чтобы определить, является ли оно пустым или пустым. У меня есть основной файл, который экспортирует одну функцию, и тест мокки, пытающийся проверить, работает. Проблема Я бегу в том, что мокко бросает ошибку типа: String.isNullOrEmpty is not a function

Вот мой stringExtensions.ts:

interface StringConstructor { 
    isNullOrEmpty(str: string): boolean; 
} 

String.isNullOrEmpty = function(str: string): boolean{ 
    return (!str || 0 === str.length); 
} 

В моей main.ts У меня есть следующий код:

///<reference path="extensions/stringExtensions.ts"/> 
export function checkForUpdate(){ 
    if(String.isNullOrEmpty(location)){ 
    /* Do Stuff */ 
    } 

В main.spec.ts

import {checkForUpdate} from "../lib/update" 
describe("test",()=>{ 
    if("should do something",()=>{ 
    checkForUpdate(); 
    }) 
}) 

Если я скопирую свой код из файла расширения в основной файл, все работает нормально, поэтому я знаю, что это справочная проблема. Atom-typescript не выдает никаких ошибок, он может найти код просто отлично, и все выглядит хорошо на своем конце.

Какие изменения необходимо внести, чтобы нормальная работа была выполнена правильно. Я просматриваю скомпилированный код JavaScript, и в моей команде ссылок нет инструкции по импорту. Должно быть?

ответ

0

Проблема заключается в том, что машинописный текст может найти определение isNullOrEmpty из-за ссылки тройной слэш. Однако выполнение не достигает точки, в которой функция привязана к String. то есть строка кода

String.isNullOrEmpty = ... 

не выполняется из-за чего String.isNullOrEmpty является undefined при попытке вызова функции. Чтобы исправить это, вы можете просто добавить

import './<path-to-file>/stringExtensions.ts' 

к вашему main.ts. Импорт выполнит код в stringExtensions.ts, и функция должна быть доступна внутри вашей функции checkForUpdate.

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