TypeScript 笔记(一、简介)

由于近期时常会写一些前端页面和相关的js,每次写复杂js的时候都是一阵烦躁,对于没有语法检查、动态类型、难封装这些特点深恶痛绝。跟前端的同事了解了下他们用的技术栈,得知了一个前端利器:TypeScript

本文将从如下几个方面,介绍TypeScript。

  • 为什么要使用TypeScript
  • TypeScript简介
  • 基础类型

1. 为什么要使用TypeScript

换句话说,为什么不使用JavaScript?

JavaScript存在一些明显的缺点,如动态类型、难封装等,总有很多争论,有人认为这不是缺点,反而是优点。本人的观点是,对于小而美的应用程序,这些确实是优点,但是对于复杂的大型程序,这些无疑是缺点,难于维护是最大的问题。

《10 Languages That Compile to JavaScript》

会有这么多替代(或补充)JavaScript的语言,正说明了JavaScript存在缺陷。

而TypeScript具备以下优点:

  1. 完全的面向对象,类和对象。基于此,TypeScript将成为提高开发人员开发效率的利器,它很容易理解和接受。
  2. 静态类型,在编写代码的阶段,TypeScript就能够找到大部分的错误。
  3. IDE支持良好,便于安全地重构。

2 TypeScript简介

TypeScript是一个开源编程语言,由Microsoft主导研发,它的语法更严格,增加了静态类型的特性,从而使开发者在编写代码的时候就能够发现大部分错误。

TypeScript旨在开发大型应用程序并转换为JavaScript。由于TypeScript是JavaScript的超集,现有的JavaScript程序也是有效的TypeScript程序。

TypeScript编译器本身是用TypeScript编写的,并编译为JavaScript,它是根据Apache 2.0许可证授权的。

C#的首席架构师,Delphi和Turbo Pascal的创建者Anders Hejlsberg一直致力于TypeScript的开发。

ECMAScript 和 TypeScript

TypeScript支持ECMAScript6标准(实际上相当于是对ECMAScript6的提前实现),并且能将代码根据需求转换为 ES3/5/6。这意味着开发者可以通过TypeScript使用最新的ECMAScript特性,无需再考虑兼容性的问题。

3. 基础类型

//布尔值
let isDone: boolean = false;
//数字
let decLiteral: number = 6;
//字符串
let name: string = "bob";
//数组
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
//元组
let x: [string, number];// Declare a tuple type
x = ['hello', 10]; // Initialize it OK
x = [10, 'hello']; // Initialize it incorrectly Error
//枚举 enum
enum Color {Red, Green, Blue}
let c: Color = Color.Green;

//任意值 any
let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check)
let prettySure: Object = 4;
prettySure.toFixed(); // Error: Property 'toFixed' doesn't exist on type 'Object'.

//空值 void
function warnUser(): void {
    alert("This is my warning message");
}

//Null 和 Undefined
let u: undefined = undefined;// Not much else we can assign to these variables!
let n: null = null;

//Never
function error(message: string): never {// 返回never的函数必须存在无法达到的终点
    throw new Error(message);
}
function fail() {// 推断的返回值类型为never
    return error("Something failed");
}
function infiniteLoop(): never {// 返回never的函数必须存在无法达到的终点
    while (true) {
    }
}

//类型断言
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

注意:我们鼓励尽可能地使用–strictNullChecks

4. 小结

本文介绍了TypeScript的基础概念,以及它相比JavaScript的优点。作为静态类型语言,它提供了如下11种类型:

  1. 布尔值 boolean
  2. 数字 number
  3. 字符串 string
  4. 数组 []或 Array<元素类型>
  5. 元组
  6. 枚举 enum
  7. 任意值 any
  8. 空值 void
  9. Null null
  10. Undefined undefined
  11. Never never

参考的文章

Microsoft TypeScript
解惑ECMAScript/JavaScript/TypeScript和CoffeeScript等概念
TypeScript 中文手册


文章作者: 沉迷思考的鱼
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 沉迷思考的鱼 !
评论
 上一篇
TypeScript 笔记(二、函数) TypeScript 笔记(二、函数)
函数是JavaScript应用程序的基础,用于定义行为。TypeScript为JavaScript函数添加了额外的功能,让我们可以更容易地使用。 本文将从如下几个方面,介绍TypeScript中的函数。 函数定义 函数的参数 函数重载 t
2019-05-23
下一篇 
认识CPU 认识CPU
以前听说过一个面试题:如何使CPU使用率达到100%的JAVA代码应该如何编写?笔者心想开几个死循环的线程也就差不多了,启动6个死循环线程,在mac系统中使用top查看,发现cpu达到了600%+,机器CPU是4核的,跑到400%还能接受,
2019-04-17
  目录