【问题标题】:Using TypeScript with Sails将 TypeScript 与 Sails 一起使用
【发布时间】:2015-03-09 18:22:03
【问题描述】:

有人在 Sails 中使用 TypeScript 吗?如果是这样,您使用什么进行外部声明?

我正在进行一个 Sails 应用程序项目,并学习了 TypeScript。我正在尝试确定 TypeScript 是否是我应该为这个项目追求的东西。任何信息将不胜感激。谢谢。

【问题讨论】:

    标签: typescript sails.js


    【解决方案1】:

    来自:https://github.com/balderdashy/sails Sails 使用 node connect expresssocket.io 构建。这意味着您需要这些库的定义文件。所有这些都可以从 Definitive TypeScript 定义存储库中获得:https://github.com/borisyankov/DefinitelyTyped

    【讨论】:

    • 按照您的指示,我检查了上述软件包。 node、express和socket.io确实在DefiniteTyped存档中。但是,连接不是。在进一步阅读中,我发现 connect 实际上是一系列中间件模块,其中一些也在肯定类型存档中,但有些没有。感谢您的指导。
    • 作为奖励,您可以考虑为 async 和 lodash 安装 tsd 文件,因为两者都提供了sails
    【解决方案2】:

    typings.json

    {
      "dependencies": {
        "bluebird": "registry:npm/bluebird#3.5.0+20170314181206",
        "connect": "registry:dt/connect#3.4.0+20160510010627",
        "express": "registry:dt/express#4.0.0+20170118060322",
        "express-serve-static-core": "registry:dt/express-serve-static-core#4.0.0+20170324160323",
        "sails": "registry:npm/sails#0.12.0+20160610190623",
        "serve-static": "registry:dt/serve-static#1.7.1+20161128184045"
      },
      "globalDependencies": {
        "es6-shim": "registry:dt/es6-shim#0.31.2+20160726072212",
        "node": "registry:dt/node#7.0.0+20170322231424",
        "socket.io": "registry:dt/socket.io#1.4.4+20170313110830"
      }
    }
    

    欢迎控制器

       /**
         * WelcomeController.ts
         *
         * @description :: Server-side logic for managing Welcomes in TS
         * @help        :: See http://links.sailsjs.org/docs/controllers
         */
    
        import e = require('express');
        import util = require('util');
    
        declare const sails: any;
    
        const WelcomeController = {
          index: function (req: e.Request, res: e.Response, next: Function) {
            console.log('index() from WelcomeController.ts');
            sails.models.welcome.find().limit(1).then((welcome) => {
              /// TODO: add logger
              console.log(`welcome page rendering w/ message ${welcome[0].message}`);
              return res.render('welcome', {
                welcome: welcome[0].message
              });
            }).catch((err:Error) => {
              console.error(err.message);
              return res.render('500', err)
            });
    
    
          },
          config: function (req: e.Request, res:e.Response, next:Function) {
            console.log('config() from WelcomeController.ts');
            return res.status(200)
              .send('<h1>sails.config :</h1><pre>' + util.inspect(sails.config) + '<pre>');
          }
        };
    
        module.exports = WelcomeController;
    

    型号

    export class Welcome {
       attributes: any = {
        id: {
          type: 'integer',
          primaryKey: true
        },
        message: {
          type: 'string',
          required: true,
          defaultsTo: 'default message'
        }
      };
    }
    

    查看

    <div class="default-page">
      <div class="header">
        <h1 id="main-title" class="container"></h1>
        <h3 class="container">Message: <code><%= welcome %></code></h3>
      </div>
      <div class="main container clearfix">

    等等...我在 git 上开始了一个示例项目,但从未完成:

    https://github.com/aslanvaroqua/sails-ts

    【讨论】:

      猜你喜欢
      • 2015-12-21
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 2019-06-06
      • 2012-12-14
      • 2016-08-24
      相关资源
      最近更新 更多