typescript是Javascript超集,是JavaScript+强类型
跨平台:TypeScript 编译器可以安装在任何操作系统上,包括 Windows、macOS 和 Linux。
ES6 特性:TypeScript 包含 ECMAScript 2015 (ES6) 的大部分特性,例如箭头函数。面向对象的语言:TypeScript 提供所有标准的 OOP 功能,如类、接口和模块。
静态类型检查:TypeScript 使用静态类型并帮助在编译时进行类型检查。因此,你可以在编写代码时发现编译时错误,而无需运行脚本。
可选的静态类型:如果你习惯了 JavaScript 的动态类型,TypeScript 还允许可选的静态类型。
总之可以将TypeScript理解为对JS做了大量的拓展和强类型校验
使用之前要先安装
1.安装:cnpm install -g typescript
2.编译的代码是ts代码,通过tsc编译之后转为js代码之后才可以在node上面运行
tsc 1-hello.ts ---将ts文件编译为js文件
$ node 1-hello.js ---运行js文件
3.数据类型
3.1基本数据类型
布尔类型:let a:boolean=true
string类型:let b:string='hello'
number类型:let c:number=2
null类型:let d:null=null
undefined类型: let e:undefined=undefined
3.2引用数据类型
let obj:Object={name:'zhangsan'}
三种数据类型都有
let arr:(number,string,Object)=[1,'hello',{name:'zhangsan'}]
3.3泛型
let arr:Array
3.4元组:声明一个数组的时候知道这个数组元素的个数和类型
let arr:[string,number,boolean]=['hello',12,true]
3.5枚举
默认枚举
enum Student{
name,
age,
}
字符串枚举
enum Gender{
male='男',
female='女'
}
3.6任意数据类型
let a:any=1/'heel'...
3.7设置参数是否可选,在参数名的后面加一个"?"表示参数是可选的,并且一个放到最后,否则会会报错
function sum(a:string,b?:number){
console,log(a,b)
}
4.面相对向
接口:
TypeScript的核心原则之一是对值所具有的结构进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。
接口可以理解为是抽象到极致的抽象类,接口中只能存在抽象方法和属性。接口通过interface关键字来声明;
接口是需要实现得 类是可以继承
类实现接口必须具有接口得属性和方法,方法一般情况为一个没有方法体得方法
可以将接口简单的理解为:一种特殊的类或者特殊的对象 一种标准,通过类或者对象实现接口的时候遵循的就是这种标准
用类去实现接口
// 用类去实现接口
interface StudentsInterFace {
name;
say(msg: string): void //抽象的方法 未实现的方法 没有方法体的方法
}
class Student implements StudentsInterFace {
name;
say(msg: string): void {
console.log(this.name + msg);
}
constructor(name) {
this.name = name;
}
foo() { }
}
// Student的实例方法也可以使用StudentsInterFace里面的属性和方法
let student: StudentsInterFace = new Student('terry')
student.say('hello')
用对象实现接口
// 用对象实现接口
enum Gender {
male = '男',
female = '女'
}
class Student {
name: string
age: number
gender: Gender
}
interface PropInterFace {
data: Array,
visible: boolean
}
let prop: PropInterFace = {
data: [
{ name: 'zhangsan', age: 12, gender: Gender.female },
{ name: 'lisi', age: 18, gender: Gender.male }
],
visible: true
}
console.log(prop);
通过上面的两个例子说明了接口就是一种标准,不管是用那种方式使用接口都必须要有接口中的属性和方法,除了接口中的属性和方法外类和对象可以有自己的属性和方法。所以,可以将接口理解为一种标准。