javascript - 创建 TypeScript 类以使用现有的 Javascript 和 Backbone 对象

标签 javascript backbone.js typescript

我开始从事一个使用 Backbone 和 Javascript 的项目。我不确定如何开始集成 Typescript。例如,我们有一个公司的命名空间,位于我们的 View 、模型、对象等之前。因此,如果没有 typescript ,创建主干对象将如下所示:

Company.Views.MyNewView = (function () { return Backbone.View.extend({ } })();

所以现在,使用 Typescript,我想我可以做类似的事情

class Company.Views.MyNewView {

}

但是,Typescript 不喜欢名称中的句点。所以我的第一个问题是如何将 Typescript 与项目中现有的命名空间一起使用?这些命名空间简单地定义为

var Company = Company || {};
Company.Views = Company.Views || {};

我的第二个问题更为笼统。展望 future ,Typescript 能否轻松与所有内容均使用标准 javascript 定义的现有项目集成?我不确定如何访问我的任何非 Typescript 类对象。提前致谢。

编辑: 尝试与现有的 Javascript 对象集成

declare module Company.Views {
    export class MyNewRouter extends Company.BaseRouter {
      // It does not recognize Company.BaseRouter
    }
}

最佳答案

Typescript 有模块的概念。模块实际上相当于公司 || {}。

所以你可以执行以下操作:

module Company{
    export module Views{
        export function MyNewView(){
            return <any>Backbone.View.extend({ });
        }
    }
}

编译成:

var Company;
(function (Company) {
    (function (Views) {
        function MyNewView() {
            return Backbone.View.extend({
            });
        }
        Views.MyNewView = MyNewView;
    })(Company.Views || (Company.Views = {}));
    var Views = Company.Views;
})(Company || (Company = {}));

一个更简单的例子

以下 typescript :

module Company{
    // You need to do at least one export 
    // for compiler to generate any code
    export var foo = 123;
}

生成:

var Company;
(function (Company) {
    Company.foo = 123;
})(Company || (Company = {}));

用于集成现有的 JS

您需要为 typescript 创建声明才能了解您的 Js。 Js 并不关心你是否在一个文件中声明一个变量并在另一个文件中使用它。 TypeScript 会这样做,因为它需要进行编译时检查。

最简单的声明是:

declare var SomeJSStuff:any; 

你可以build up from there

关于javascript - 创建 TypeScript 类以使用现有的 Javascript 和 Backbone 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16641094/

相关文章:

javascript - 获取具有值的系列中最后一个输入字段的索引

javascript - 使用 jquery 遍历列表

backbone.js - 使用 Backbone.js 的主要公司列表

javascript - Node.js——未定义 :0 Syntax Error: Unexpected end of input

javascript - Typescript 中类型为 'someProp' 的值不存在属性 'object'

javascript - 根据类设置元素宽度

javascript - 在我的 Jquery 插件中执行循环的更好方法?

javascript - 如何访问父分区的第一个子分区

typescript - NestJS 无法解析 JWT_MODULE_OPTIONS 的依赖

javascript - 如何比较日期时间字符串格式 : (YYYY-MM-DD XX:YY) in javascript