ts的简介
Typescript由Microsoft开发维护的一种开源编程语言。支持Javascript的所有语法和语义,同时作为EACMAScript的超集提供一些额外的功能,如类型检测和更丰富的语法。
ts中包含以下几种数据类型
- number(数字类型)
- string(字符串类型)
- array(数组类型)
- tuple(元组类型)
- any(任意类型)
- boolean(布尔类型)
- undefined
- null
- void(没有任何类型)
- enum(枚举类型)
- never(其他类型)
ts的特点
TypeScript
是JavaScript
的超集,为Javascript的生态增加了类型机制,并最终将代码编译为纯粹的Javascript代码,为大型应用而生。有两个特点:一是强类型,强类型的特点是不能随意的更改数据的类型;二是基于类的面向对象编程。Typescript的类型机制可以有效的杜绝变量类型引起的误用问题,他会借助自动编译工具的帮助,在编写代码时减少错误,提高生产力。
ts的优点
- TypeScript 是 JavaScript 的超集,.js 文件可以直接重命名为 .ts 即可
- 即使没有显式的定义类型,也能够自动做出类型推论
- 可以定义从简单到复杂的几乎一切类型
- 即使 TypeScript 编译报错,也可以生成 JavaScript 文件
- 兼容第三方库,即使第三方库不是用 TypeScript 写的,也可以编写单独的类型文件供 TypeScript 读取
- 类型系统增加了代码的可读性和可维护性
- 拥有活跃的社区,并且支持ES6规范
ts的缺点
- 对没有接触过静态语言的同学有一定的学习成本,需要理解接口(Interfaces)、泛型(Generics)、类(Classes)、枚举类型(Enums)等概念
- 短期可能会增加一些开发成本,毕竟要多写一些类型的定义,不过对于一个需要长期维护的项目,TypeScript 能够减少其维护成本
- 集成到构建流程需要一些工作量
- 可能和一些库结合的不是很完美
number类型(包含整数和浮点数)
var num:number = 3
num = 3.2
console.log(num) //3.2
string(字符串类型)
var str:string="你好"
array(数组类型)
//第一种
let arr1:number[] = [2, 5, 6, 7]
let arr2:string[]=['2','4','5']
//第二种
let arr3:Array<string>=['34','fd','re']
let arr4:Array<number>=[4,5,6]
//第三种
let arr5:Array<any>=[4,5,'sd',6]
tuple(元组类型)
//元组类型属于数组的一种,可以定义多种类型
let arr6:[string,number,boolean]=['ds',3,true]
any(任意类型)
//不受类型限制,可以任意赋值
let type:any='fdf'
type = 3
console.log(type) //3
//任意类型的用法,ts中没有object类型
var box: any = document.getElementById("box");
box.style.color = "red";
enum(枚举类型)
enum flag = {
success:1,
error: 0
}
console.log(flag.error) //0
var f:flag = flag.success
console.log(f) //1
//没赋值的默认赋值为索引
enum color = {
red,
blue,
green,
orange
}
console.log(color.green) //2
//某一个赋值,默认赋值的值往下加1
enum color1= {
red,
blue:5,
green,
orange
}
console.log(color1.orange) //7
undefined类型
var und:undefined
console.log(und) //undefined
null类型
var n:null
n = null
//一个元素可以设置多个类型,当类型不确定时
var num1: undefined | number | null;
num1 = 435;
console.log(num1); //435
void类型 void 表示没有任何类型,一般用于定义方法的时候方法没有返回值
function run:void(){
console.log('re')
}
run()
//必须返回数字类型的值
function test:number(){
return 332
}
console.log(test())
nerver其他类型(包含null和undefined类型)代表不会出现的值
//这意味着声明的never只能被never类型赋值
var d: undefined;
d = undefined;
var e: null;
e = null;
// var m: never;
// m = (() => {
// throw new Error("错误");
// })();