Javascript 打字机的优点

Javascript 打字机的优点,javascript,typescript,Javascript,Typescript,我刚刚开始阅读Typescript的基础知识,有人能告诉我使用Typescript比Javascript或jquery的优势吗?举个例子会有帮助 以下是关于TypeScript的视频集: 基本上,它向Javascript添加了可选的静态类型,因此静态类型给Javascript带来的所有优势。JQuery和Typescript并不是相互排斥的,因为在Typescript中使用JQuery是相当常见的。在Javascript上使用Typescript的主要好处是增加了类型检查。这允许您创建接口并按

我刚刚开始阅读Typescript的基础知识,有人能告诉我使用Typescript比Javascript或jquery的优势吗?举个例子会有帮助

以下是关于TypeScript的视频集:


基本上,它向Javascript添加了可选的静态类型,因此静态类型给Javascript带来的所有优势。

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

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

  • 声明文件。使用声明文件,您可以将类型信息添加到javascript库中。此结构信息将为您在VisualStudio中获得出色的intellisense支持

  • “标准”OOP。如果你有C#或Java背景,你可能甚至不需要打字脚本教程。它只是工作。您有类、接口、访问修饰符、扩展机制等等

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

最后是语法。有时候,影响最大的是小事。对我来说,typescript的语法感觉非常完美。让我举几个例子:

带有“:”和类型推断的类型注释

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));
现在类型化数组和lambda结合在一起:

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
我真的很喜欢使用打字脚本。这将大大提高你的工作效率。还有更多的事情要做:


0.9版本将具有泛型,对于1.x版本,他们计划实现异步/等待调用

typescript为您提供了强大的键入和编译时检查功能。javascript没有。jquery是一个库,可以与两者一起使用。typescript是javascript的超集。谢谢Sean。到目前为止,我使用javascript进行客户端验证,并根据客户端选择启用或禁用页面中的控件。我的大部分业务逻辑都是用C语言编写的。在客户端创建接口对我来说是新的。客户端中的接口如何有用?这取决于您的用例。我们已经在Typescript中开发了两个相当大的客户端应用程序,因此在能够通过接口编写解耦代码的同时进行类型检查非常好。同样,这是主观的。根据我对创建接口、类的理解,一切都取决于您的数据库(或表)结构。在您的例子中,您的意思是typescript代码也将包含一些业务逻辑吗?如果是这样,最终用户是否可以看到逻辑?我还了解到.ts文件将编译为.js文件。接口和类与数据库或表没有任何关系。客户机上没有业务逻辑(除了纯粹出于UX原因的验证。实际的验证发生在服务器端),但有大量的控件和UI元素、API客户机等通过接口和客户机表示。关于将Typescript编译为Javascript,你是对的。谢谢Sean,我读了一些关于Typescript的书,我能理解的是Typescript除了静态类型和易于维护的代码外,没有提供任何比Javascript更多的功能。如果我有一个1000行JavaScript,它可能值得考虑Typescript。但是,如果我只有很少的警报语句,那么使用JavaScript还是Typescript并不重要。对吧?谢谢Kenneth的链接。我刚看了第一个视频。它提供了信息。将在以后的某个时间完成剩余的工作。:)酷。谢谢你花时间回答这个问题。Typescript是客户端C#,它被转换为JavaScript。