Машинопись: ссылки Resig расширим

голоса
2

Я пытаюсь ссылаться на существующий код, который использует Resig на «простираться», но я получаю кучу ошибок

------ test.ts --------

/// <reference path=myclass.js />
var m = new MyClass (3);

------ myclass.js --------

/// <reference path=class.js />

var MyClass = Class.extend({

    init: function (i)
    {
        this.i = i;
    },
})

------ class.js --------

(copied from http://ejohn.org/blog/simple-javascript-inheritance/)

ошибки:

Supplied parameters do not match any signature of call target
The name 'Class' does not exist in the current scope
The property 'extend' does not exist on value of type '() => void'
The name 'Class' does not exist in the current scope

я понимаю, что в конце концов я хотел бы переписать простираться на основе кода на машинопись, но до тех пор, как не делать я ссылаться на него нового кода?

Я предполагаю, что это напрашивается глубокий вопрос - почему он жалуется на ошибки типа в существующем коде JavaScript?

Задан 02/10/2012 в 17:47
источник пользователем
На других языках...                            


1 ответов

голоса
3

Машинопись, как правило, не может выводить типы из внешнего кода JavaScript.

Вы должны объявить форму «продлить» код вы звоните в, так что машинопись знает, что форма типа:

declare class Class {
    static extend(body: any);
}

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

Ответил 02/10/2012 в 18:23
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more