存放多个元素的集合
最简单的方法是使用[类型+方括号]来表示数组:
let myArr:number[] = [1,2,3];
数组的项中不允许出现其他类型:
let myArr:number[] = [1,2,3,'tom'];//不能将类型“string”分配给类型“number”。
数组的一些方法也会根据数组定义时的类型进行限制:
let myArr:number[] = [1,2,3];
myArr.push('8');//类型“string”的参数不能赋给类型“number”的参数。
如果想数组中有不同类型的数据,就定义成any类型的数组
object代表一个js对象
{ }
用来指定对象中可以包含哪些属性,加问号代表是可选属性
语法:{属性名:属性值,属性名?:属性值}
let a :{name:string};
a = {name:'张三'};
如果想让对象除了存在某个特定的属性值之外还有其他不确定的属性值,可以这么写:
let obj : {name:string,[propName:string]:any};
obj = {name:"张三",age:150};
在JS中,有两种常见的定义函数方式——函数声明和函数表达式
//函数声明
function sum(x,y){
return x+y
}
//函数表达式
let Mysum = function(x,y){
return x+y
}
一个函数有输入和输出,要在ts中对其进行约束,需要把输入和输出都考虑到,其中函数声明的类型定义较为简单:
function sum(x:number,y:number):number{
return x+y
}
固定长度的数组
创建元组的方法:
let a:[string,string]
a = ['asd','asd']
enum Gender {
Male = 0,
Female = 1
};
let a : {name : string, gender:Gender}
a = {name:'张三',gender:Gender.Male};
继承是多态使用的前提。
但是,父类本身可能并不需要对某些方法具体的实现,所以父类中定义的方法,我们可以定义为抽象方法。
什么是抽象方法?
下面对的代码中,Shape类就是一个抽象类,其中包含一个抽象方法。
对类进行限制、定义规范。
interface Person{
name:string;
sayHello():void;
}
class Myclass implements Person{
name:string;
sayHello(){
console.log('哈哈哈')
}
}
class的属性可能会被篡改:
class Person{
name:string;
age:number;
constructor(name:string,age:number){
this.name = name ;
this.age = age;
}
}
const p = new Person('张三',18);
p.name = '李四';
p.age = -38;
属性可以被容易修改,将会导致对象中的数据非常不安全
可以使用private
修饰符,使得属性只能在类内部修改,但是如果在tsconfig.json文件中的noEmitOnError
属性如果是false,那么依然会被编译。