TypeScript 联合类型
联合类型意味着该值可以是多种类型之一
如下
/**
* 联合类型
*/
var muchtype:string|number="hello";
muchtype=1;
在这块我们必须使用string或者number支持的类型,所以下面我们可以调用扩展方法toString()
/**
* 联合类型
* 注意:如果说我们使用字符串的length属性那么我们需要注意,如果是number类型是不支持的
* 这一块我们必须使用string或者number都支持的类型,那么下面我们可以进行调用扩展方法toString()
*
*/
var muchtype:string|number="hello";
muchtype="";
muchtype=1;
console.log(muchtype.length)
console.log(muchtype.toString().length)
TypeScript 中的对象类型 - 套接字
套接字可以描述具体的行为,也可以描述对象的结构形状。 事实上typescript 接口可选,我们还需要遵循套接字命名约定。 套接字通常以小写字母开头。 事实上,在某些语言中,建议在套接字名称前添加 I 前缀。
interface IStudent{
name:string
}
/**
* 接口规范了name属性是必须要写的所以我们要通过第四行代码进行使用
* 接口起到一个约束作用约束我们这些属性字段必须一对一的编写.
*/
var obj1:IStudent;
obj1="11";
obj1=1;
obj1={name:"11"};
假设我们对套接字进行如下更改
interface IStudent{
name:string,
age:number
}
所以我们必须对age进行形参运算
obj1={name:"11",age:1};
可选类型可为空
interface IStudent
{
name:string,
age?:number //?为一个可空类型nullable 他是一个可有可无的,那么在下面我们可以不用对age进行赋值操作也不会出现异常
}
var obj2={name:"张三",age:1}
当我们的属性不确定时,我们可以通过下面的方法来实现,any必须是任意类型,
因为当我们使用不确定数量的属性时存在局限性。
其实下面的属性中,比如stringnumber,我们也可以使用联合类型。 我们可以根据实际需要更改这部分。
//属性个数不确定的时候
interface IStudent{
name:string,
age?:number,
[propName:string]:any
}
var obj3:IStudent={name:"Mr.A",age:1,sex:"男",birthday:"2020-03-20"}
只读属性readonly
interface IStudent{
name:string,
readonly age:number
}
var obj3:IStudent={name:"Mr.A",age:18}
obj3.name="Mr.B";
obj3.age=19;
通过上面的代码我们可以发现typescript 接口可选,当我们给obj3.age做形参时,会发现感知错误提示如下
也就是说,一旦我们指定了初始值,就无法更改它。