如何在javascript中包含typescript

如何在javascript中包含typescript,javascript,node.js,typescript,Javascript,Node.js,Typescript,我有一个node.js和server.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 va

我有一个node.js和server.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);
我有两个问题:

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

  • 是否可以将
    server.js
    转换为
    server.ts
    (成为类型脚本)


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

    export function doThing() {
      var a = 123;
    }
    
    // server.js:
    var doThing = require('t');
    
    doThing();
    
    TypeScript主要使用JavaScript语法,因此您通常可以将文件重命名为.ts,并且大部分都可以工作,尽管有一些东西一开始就有未知的类型。您可能需要在require()行中将关键字
    var
    替换为
    import
    。但是我认为没有“自动转换”程序。

    ad1)不,节点无法处理TypeScript脚本,除非您首先通过TypeScript编译器将
    t.ts
    编译为
    t.js

    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!
      
    • 如果以浏览器为目标,并使用
      窗口
      对象,则可能会遇到以下错误:

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

    AFAIK没有转换工具,因为前面的示例表明该工具将难以解决错误解决问题。然而,也有一些人经历了这个过程。

    你应该先将其转换为js以提高性能。我真希望我能理解这一点。