2.0 TypeScript类型2(object,any,unknown,void,never,enum)

上一篇:

TypeScript类型1(string,number,boolean,array,tuple)https://blog.csdn.net/qq_42543244/article/details/122755988

1. object:对象

// let job: object;
// job = { address: '郑州市', salary: '10k' }; //success
// job = {}; //success
// job = function () { }; //success
// 上述代码和js中的声明对象的方式没有什么不同,既然使用了ts,那就用处不在这里
let job: { name: string, salary: number }
job = { name: 'ios', salary: 11 }; //success
// job = {}; //error
// job = { salary: '10k' }; //error

// 比如这个时候,我们只想设置一个name,salary不想设置,这个时候是报错的,修改如下
// job = { name: 'ios' }; //error 
let job1: { name: string, salary?: number }  //属性 ? : type  表示此属性可有可无
job1 = { name: 'android' }; //success

// 比如要求 name属性,salary属性这两个属性必须要有,其他的属性随便添加修改
// job = { name: 'ios', salary: 11, company: '阿里巴巴' }; //error,多设置了属性名,此属性名并未在job中声明
// [propName: string]: type; type:any:表示任意类型的属性; type:string:表示属性的值只能为string 同理···
let job2: { name: string, salary: number, [propName: string]: any }
job2 = { name: 'ios', salary: 11, company: '阿里巴巴', boss: '马云' }; //success

2. any:任意类型

// 不太建议在ts中使用(既然都用ts,类型都为any,那还为什么使用ts?)
// 如果不指定类型为any 比如let a; a='123';a=999; ts的编译器会自动认为此类型为any(隐形any)
let a: any;
// a = 'xiaomi'; //success
// a = 999; //success
// a = true; //success
a = ['123'];  //success
// .........

3. unknown:类型安全的any,unknown的变量不能直接赋值给其他变量

let b: unknown;
let bb: string;

// b = 123;  //success
// bb = b;  //error

// b = 'xiaomi';
// bb = b;  //error
// 如何成功
/* 类型断言:用来告诉解析器变量的实际类型
    语法:
        变量 as 类型
*/
b = 'xiaomi';
bb = b as string;  //success
if (typeof b === 'string') bb = b  //success

/* any类型,不报错,怎么设置都可以,可以赋值给任意变量,可见any真的不到万不得已不能使用 */
let c: any;
c = 999;
bb = c; //success  

c = ['123'];
bb = c; //success

4. void:用来表示空,以函数为例,就表示没有返回值的函数

function fn(): void {
    // return '123';  //error
    // return 'xiaomi'; //error
    return;  //success
    // return undefined; //success
    // return null; //success
    //或者不写return
}
let data: void;
// data = '123'; //error
// data = [123]; //error
// data = undefined; //success
// data = null; //success

5. never:从不会出现的值,没有值,不能是任何值,永远不会有返回结果(返回“从不”的函数不能具有可访问的终结点)

let good: never;
// good = '123'; //error
// good = undefined; //error
// good = null; //error

function goodFun(): never {
    // return '123'; //error
    // return;  //error
    // return undefined; //error
    // return null; //error
    // console.log('123'); //error
    throw new Error('error'); //success
}

6. enum:枚举,枚举类型用于定义数值集合。

enum Gender {
    woman,
    man,
    //woman = 0,
    //man=1
}
let person: { name: string, gender: Gender };
person = {
    name: '科比',
    gender: Gender.man
}
if (person.gender === Gender.man) console.log('男');
if (person.gender === Gender.woman) console.log('女')

下一篇:

TypeScript补充(& ,type)https://blog.csdn.net/qq_42543244/article/details/122778263

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jay丶萧邦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值