TypeScript 定义

TypeScript 是 JavaScript 的超集,正因为它是建立在 JavaScript 上的一门语言,TypeScript 把其他语言中的一些精妙的语法带入到了 JavaScript 之中,从而把 JS 带入到了一个新的高度,在 TS 里面可以使用各种 JS 之外的扩展语法,同时 TS 对面向对象和静态类型的良好支持,你可以建造出更健壮,更可维护的大型项目,
 
什么是 TypeScript,打开 https://www.typescriptlang.org/, TypeScript is a typed superset of JavaScript that compiles to plain JavaScript。这就是官网对 TypeScript 的准确定义,它说 TypeScript 是 JavaScript 的一个超集,而且它拥有类型机制,它不会直接在浏览器执行,它会在编译成 JavaScript 后才能够被执行

什么是超集,比如说 ES6 是 ES5 的一个超集,因为 ES6 兼容了 ES5 所有的语法的情况下,还提出了自己一些新有的独特的语法,所以 ES6 包含了 ES5 所有的内容,包括一些额外的东西,那我们就可以说 ES6 是 ES5 的一个超集。TypeScript 是 JavaScript 的一个超集,就意味着,它除了包含 ES6 ES5 这样的基础的绝大多数的特性之外,它还有一些自己独特的语法特性,所以学习 TypeScript 就是在 ES6 ES5 基础上去学习 TypeScript 的一些独特的语法

我们说 TypeScript 有自己的类型,这里的类型实际上是一种静态的类型,我们通过代码举个例子就明白了
demo.js
// a 是一个动态类型,它的类型可以随着赋值改变
let a = 123; // 这个时候 a 是一个基础类型,是一个 number 类型的变量
a = '123'; // 这个时候,a 是一个 string 类型的变量,这个时候不会报错

 


demo.ts
// 静态类型
let b = 123;
b = '123';
/**
* 这个时候报错了,Type '123' is not assignable to type 'number',
* string 类型无法存到 number 类型的变量里面去
* b 开始定义的是数字类型,未来也只能是数字类型
*/

 

所以说在 TypeScript 里面实际上指的是这种静态类型。实际上 ts 里面 b 应该这么写
let b: number = 123;
我定义一个 number 类型的 b ,它的初始值是 123,未来 b 不能是其他类型,但是可以改变值
let b: number = 123;
b = 456;

 


TypeScript 不能直接在浏览器或者 Node 环境下运行,它必须通过编译器编译成普通的 JavaScript 之后再去运行,怎么理解,打开 https://www.typescriptlang.org/play/index.html。在左侧编写一些 ts 代码
ts
interface Person {
  name: string
}
const teacher: Person = {
  name: 'zhang san'
}
js
"use strict";
const teacher = {
  name: 'zhang san'
};
ts 直接拷贝到浏览器会报错,所以要编译成 JS 代码,右侧是编译好的 JS 代码,这个是可以直接在浏览器中运行的
posted @ 2020-05-19 07:02  wzndkj  阅读(310)  评论(0编辑  收藏  举报