1. 基本数据类型
在ts当中基础类型:Boolean、Number、String、null
、undefined
以及 ES6 的 Symbol 和 ES10 的 BigInt。
主要用法如下所示,会对变量的值进行一些限制
let a:string = "abc"
let b:boolean = false
let c:number = 123
// unknown 类型不可以调用属性和方法,
let tUnkown:unknown = {a:1}
let d:any = {}
2. Object类型
三种对象类型的区别
Object 类型,所有原型上是object的都可以是该类型 object 类型,只能是引用类型,不可以是基本类型 {} 空对像 所有原型上是object的都可以是该类型,但是这个的弊端是 无法去添加新的方法和属性
let obj1:Object = 111;
let obj2:object = [];
let obj3:{} = {a:1};
// obj3.name = 'jjs' 错误的写法
3. interface接口
interface接口, interface是一种约束,让数据满足其格式 如果AInterface 有name属性实现它的对象没有实现这个属性就会抛出异常,多或少都不可以 如果是重名的interface那么就会合并 如果gender属性可以不存在的话,可以在其后面加上一个? 像不接受interface的约束可以采用[propName: string]: any; 想设置属性为只读,可以在属性名前面加上 readonly
interface AInterface {
name:string,
age:number
}
interface AInterface {
gender?: number,
readonly cb: ()=> boolean,
[propName: string]:any
}
const Test:AInterface = {
name: 'jss',
age: 12,
cb: ()=> {return false},
// gender: 1
a: 2
}
// Test.cb = ()=> {return true} 这样就是错误的写法
4. 数组类型
1. 类型:[] 2. Array<类型> 泛型 二维数组的话,套娃即可 1. 类型: [][] 2.Array<Array<类型>> 也可以使用interface来指定数组的类型
let arr: number[] = [1,2,3]
let arr1: Array<string> = ['1','4']
interface person {
name: string,
age: number
}
let arr2: person[] = [{name: 'jjs',age: 1}]
5. 函数
函数的声明 以下这种格式就可以声明成功 function fn(name:string):number { return 1 } 也可以指定默认值,和可选参数 也可以使用接口来指定函数的形参 也可以进行函数重载,通过下面的例子可以生动的展示
function fn(name:string = 'jjs'):number {
return 1
}
interface fnInterface {
fnName:string,
fnArgs: number
}
function fn2 (args:fnInterface): string {
return args.fnName
}
let testArr:number[] = [1,2,3]
function opterArr():number[]
function opterArr(id:number):number[]
function opterArr(ids?:number[]|number):number[] {
if(typeof ids == 'number') {
return testArr.filter(item => ids==item)
}
else if(Array.isArray(ids)) {
ids.forEach(item => testArr.push(item))
return testArr
}else {
return testArr
}
}
let arr3:number[] = [4,5,6]
console.log(opterArr(3))