【问题标题】:How to include typescript in javascript如何在javascript中包含打字稿
【发布时间】:2015-10-31 00:39:11
【问题描述】:

我有一个带有 server.js 的 node.js

var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World\n');
}).listen(port);

假设我有一个打字稿 t.ts

var a = 123;
console.log(a);

我有两个问题:

  1. 是否可以从server.js 调用t.ts(假设我必须使用server.js)?

  2. 是否可以将server.js 转换为server.ts(成为打字稿)?

【问题讨论】:

  • 你应该先把它转换成js以获得性能。

标签: javascript node.js typescript


【解决方案1】:

通常,如果您的脚本导出一个类或模块,这应该是可能的。将其功能包装在一个函数中,并在 TS 中导出。

export function doThing() {
  var a = 123;
}

// server.js:
var doThing = require('t');

doThing();

TypeScript 主要使用 JavaScript 语法,因此您通常只需将文件重命名为 .ts 即可,其中大部分都可以工作,尽管有一些未知类型的东西开始。您可能只需要在 require() 行中将关键字 var 替换为 import。不过我认为没有“自动转换”程序。

【讨论】:

  • 我真希望我能理解这一点。 . .
【解决方案2】:

ad 1) 不,除非您先通过 TypeScript 编译器将 t.ts 编译为 t.js,否则节点无法处理 TypeScript 脚本。

ad 2) TypeScript 为 JavaScript 添加了功能,在许多情况下,您只需将 file.js 重命名为 file.ts,您将拥有有效的 TypeScript 代码,但也有一些情况下您会收到错误 - 例如:

  • 变量复用

    var n = 5;  // TypeScript compiler infers that 'n' is a number
    n = "a";    // Error: "a" is not a number!
    
  • 如果您定位浏览器并使用window 对象,那么您可能会遇到以下错误:

    var cropper = window.cropper; // throws error: Property 'cropper' does not exist on type 'Window'
    

AFAIK 没有转换工具,因为前面的示例表明该工具难以解决错误。但是,经历过这个过程的人有migrationguides

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 2016-11-12
    相关资源
    最近更新 更多