一、安装
1.安装
完成之后,在命令行输入node检查是否安装node.js在命令行输入tsc -v检查是否安装ts
2.简单使用
我们创建一个helloworld.ts文件写入下边代码
console.log('hello world');
我们通过输入tsc ts文件所在位置 将ts文件转换为js文件并重新为新文件(新文件名字和ts一样,位置和ts文件为兄弟关系 原来的ts文件不会改变)
我们使用node ts文件所在位置运行ts文件输出hello world
二、数据类型:
(any number string boolean array 元组 enum undefined null never unknown <>(<>类型下一节介绍))
1.没有指定类型的变量都是any类型
2.let 变量:any(给变量指定类型)也可以直接赋值 关闭了ts检查的类型
let a:number=10
当这样赋值以后再赋值给字符串会报错(不影响编译,但并不会这样做)
3.数字类型number
number包括了所有数字类型(小数正负数)
4.字符串类型string
let a:string=''
再给他赋值为数字,也会报错,但是不影响执行
5.布尔类型:true/false 和前两个一样,赋值别的也会报错,不影响执行
6.数组array:
let arr: number[]=[]
声明了数字数组,push进去只能为数字,同样也可以声明string的数组
7.元组:固定长度但是不固定类型的数组
let arr:[number,string]
arr=[33,'zhangsanq']
声明了两个数据的元组而且数据必须按照数据类型的顺序排类
8.枚举类型enum:
enum color{red=1,green=3,blue=3};
console.log(color.red)
9.
function fun():void{}
注意的是void是表示当前返回值为无返回类型,不是没有返回类型
10undefined 未定义
11.null 空
12.never代表从不会出现的类型,不能返回类型,类似黑洞
function fun1:never{}
函数体中如果有死循环就可以执行了(ts类型预测)
13.unknown类型
unknown有类型检查,any不会去检查数据类型,unknown可以和any进行数据交互,和number不能进行数据交互,实质上是检查类型的any类型
let n: number
let j: any
let s: unknown
n=10
n=j
n=s
最后一行代码会报错
14.字面量类型(自定义)
let num:100
num=100
定义100以后只能赋值100因为他的类型是100,赋值其他数值会报错
let num:{
name:string
}
num={
name:"a"
}
num的类型是对象(包含一个name属性的对象)
15.<>泛类型(下节说)
16.let num:number |string 联合类型,这样写下边就不会报错了
实质上是定义num为数字类型或是字符串类型
let num:number |string
num=20
num='字符串'
17.let num:number & string (既是整数类型又是string类型 )
二、部分关键词
1.type 类型别名(用来定义类型)
type person={
name:string,
age:number
}
let num:person={
name:'张三',
age:18
}
2.冒号右边都是数据类型,左边都是形参
3.interface(也是用来定义类型)
interface person1{
}
与type的区别:
interface可以类型集合
type不可以再次定义
即interface可以实现下边代码
interface person{
name:string,
}
interface person{
age:number
}
4.class:(定义类)
class person{
name:string="张三"
//静态方法
satic age:number=20
fun():void{
console.log(111)
}
}
//继承
class Father extends Person{
}
new Father().name
Father.age
静态方法调用:Father.age(允许被修改)
如果定义的时候在static前边加readonly就不允许修改了