一、Any 类型 和 unknown 顶级类型
nodejs 环境执行ts
npm i @types/node --save-dev (node环境支持的依赖必装)
npm i ts-node --g
1.没有强制限定哪种类型,随时切换类型都可以 我们可以对 any 进行任何操作,不需要检查类型
let anys:any = 123
anys = '123'
anys = true
2.声明变量的时候没有指定任意类型默认为any
let anys = 123
anys = '123'
anys true
3.弊端如果使用any 就失去了TS类型检测的作用
unknown类型比any更加严格当你要使用any 的时候可以尝试使用unknown
// unknown 可以定义任何类型的值
let val:unknown;
val = true;
val = '123';
val = 123;
val = [];
val = {};
val = null;
val = undefined;
// unknow类型不能作为子类型只能作为父类型 any可以作为父类型和子类型
let value:unknown = '123'
let value1:string = value
// any类型就可以
let value:any = '123'
let value1:string = value
//unknown可赋值对象只有unknown 和 any
let value:unknown = '123'
let value1:any = '456'
value1 = value
二、对象的类型
在typescript中,我们定义对象的方式要用关键字interface(接口),我的理解是使用interface来定义一种约束,让数据的结构满足约束的格式。定义方式如下
// 我们person中定义a,b 但是对象中缺少b,这样会报错。
// 使用interface接口,定义的必须与接口保持一致。
interface Person {
a:string,
b:string
}
const person:Person = {
a: '123'
}
// 重名的interface可以合并
interface A {
name: string,
}
interface A {
age: number
}
var B:A = {
name: 'wang',
age: 18
}
// 继承
interface A {
name: string
}
interface B extend A {
age: number
}
var C:B ={
name: 'wang',
age: 18
}
可选属性 使用?操作符
// 可选属性的含义是该属性可以不存在
// 这样就不会报错
interface A {
name?: string,
age: number
}
var B:A = {
age: 18
}