TypeScript与JavaScript的区别
JavaScript是一种简单的浏览器脚本语言,具有函数优先特性的轻量级、解释型或者说即时编译型的编程语言。也被用到了许多非浏览器环境,如:Node.js等。JavaScript 的动态特性,使它存在许多怪异之处。
比如:JavaScript允许访问不存在的属性:
const obj = { width: 10, height: 15 };
//area结果NAN
const area = obj.width * obj.hei;
而TypeScript是带类型声明的,可以在编译的时候检测出类型错误
const obj = { width: 10, height: 15 }
//会类型编译报错
// Property 'hei' does not exist on type '{ width: number; height: number; }'
const area = obj.width * obj.hei
TypeScript扩展了JavaScript的语法,新增了类型/接口的概念,TypeScript同时支持模块,对大型库的重构更加快捷。
TypeScript中的数据类型
基础数据类型
let isDone: boolean = false
let decimal: number = 6.0
let color: string = ‘blue’
数组类型
有两种写法:1.元素类型后加[ ] 2.使用数组泛型,Array<元素类型>
let list1: number[] = [1, 2, 3]
let list2: Array<string> = ["a", "b"]
元组tuple
有固定的长度和类型,各元素的类型不必相同
let x: [string, number] = ["hello", 10]
枚举enum
enum Color { Red, Green = 2 }
let c: Color = Color.Red // 0
任意类型any,允许被赋值任意类型
let num:any = 123;
num = 'str';
num = true;
特殊类型null、undefined
let u: undefined = undefined
let n: null = null
void类型
标识方法返回值类型,表示该方法没有返回值
function test():void{
alert('test void')
}
never类型
是null和undefined的子类型,可以赋值给任意值,表示不会出现的值
let test:never;
test = 123; // 错误
test = (() => { // 正确的写法
throw new Error(' ');
})()
对象类型
let bag:object;
bag = {color: 'Red', size: 25}
这篇先写到这里,下篇再写TypeScript中高级类型啦