9

Typescript 和 Javascript 有什么区别?每种语言的设计目标是什么?这些设计目标有何不同?

打算与 Javascript 一起使用的库和框架的兼容性如何,例如 jquery,也与 Typescript 兼容?

一些例子会有所帮助。

4

3 回答 3

15

我在一些小型业余项目中使用过 typescript,我确信它是完美的 Javascript 替代品。我最喜欢的功能是:

  • 声明文件。使用声明文件,您可以将类型信息添加到您的 javascript 库中。此结构信息将为您提供 VisualStudio 中出色的智能感知支持。

  • “标准”面向对象。如果您来自 C# 或 Java 背景,您可能甚至不需要打字稿教程。它只是工作。你有类、接口、访问修饰符、扩展机制……

  • 内置对模块的支持。Typescript 有一个稍微令人困惑的模块系统。您可以将代码拆分为多个 .ts 文件并附加它们,但您也可以创建不同的模块。

最后:语法。有时,影响最大的是小事。对我来说,打字稿的语法感觉很完美。让我举几个例子:

使用“:”键入注释并进行类型推断

var a = 5; //infers that a has the type number
var canvas : HTMLCanvasElement = document.getElementById("canvas"); 
// automatically casts to the canvas type. Intellisense will now suggest all the canvas specific methods

用作列表、堆栈、...的数组

var array= []; //dynamic type
array.push(1);
array[1]=2;
array.pop();

var array2 : number[] = []; //typed array
array[0]=2;
array[1]="hello"  //compile time error. You've got to love the type system. Finally you can trust your collections

以及带有箭头语法的函数作为 lambdas:

var array=[];
array.push(1);
//...
array.forEach((num)->{alert(num);});
//for single statement functions you can write
array.forEach((num)->alert(num));

现在类型化数组和 lambdas 结合起来:

var array: number[]=[];
array.push(1);
//...

//let's assume you want to work with the data in the array. You've got to filter it and process it. Lambdas will come in handy, as well as the type inference
array.filter((num)->num>3).map((num)->num*2).forEach((num)->alert(num));

// the first lambda with the comparison is fully type safe. The compiler knows the type of the array. Therefore it can infer the type of the parameter num and will check if num can be compared to a number

我真的很喜欢使用打字稿。它将显着提高您的生产力。还有更多:http://typescript.codeplex.com/wikipage?title=路线图 https://github.com/Microsoft/TypeScript/wiki/Roadmap

0.9 版本将包含泛型,对于 1.x 版本,他们计划实现 async/await 调用。

于 2013-04-21T07:28:03.157 回答
3

以下是关于 TypeScript 的视频集合:

http://channel9.msdn.com/search?term=typescript

基本上它为 Javascript 添加了可选的静态类型,因此静态类型的所有优点都带入了 Javascript。

于 2013-04-20T23:28:17.423 回答
3

JQuery 和 Typescript 并不相互排斥,因为在 Typescript 中使用 JQuery 是相当普遍的。使用 Typescript 而不是 Javascript 的主要好处是增加了类型检查。这允许您创建接口并按合同开发。在较大的项目中,进行类型检查可能是有益的,但这是一种主观偏好。

于 2013-04-20T23:31:59.797 回答