如何在javascript中包含typescript
我有一个node.js和server.js如何在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
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以提高性能。我真希望我能理解这一点。