TS类型1

类型

一些列值及可以对其执行的操作

eg:boolen类型包含所有的布尔值(true/false),以及可以对布尔值执行的操作(||,!,&&);

any

无法确认类型是什么,默认为any,兜底类型,尽量避免使用。

unknown

与any相似,unknow也表示任何值,但是TS会要求你在做检查

  1. ts不会将值推导为unknown类型,需要显示注解

    2.unknown类型的值可以比较

    3.但是执行操作时候,必须先确定是某一类型值在做校验

let a: unknown = 30;
if (typeof a === "number") { // 必须先细化类型在进行操作
    a++;
}

boolean

true/fale

const a = false; // 由TS推导出类型为boolean类型
const b: boolean = true; // 显示注解告诉ts这是一个boolean类型
字面量类型

仅表示一个值的类型叫字面量类型

const a: true = true; // 限制a只能为boolen类型中的true
number

包括所有的数字:整数、浮点数、正数、负数、NaN等等

const a = 123; // TS推导出为number类型
const b: number = 4556; // 显示注解为number类型
const c: 12 = 12; // 字面量类型,一个具体的值
const d: 13 | 14.12 = 13; // 13或者14.12中的一个值
bigint

JS和TS引入的新类型,在处理比较大的整数时候,不用在担心舍入误差。

const a: bigint = 100n;

1.number表示的最大整数为 2 53 2^{53} 253,而bigint可以表示比这更大的数

  1. 不是所有的JS引擎都支持bigint
string

包含所有字符串,以及可以对字符串执行的操作

symbol

唯一,不与其他任何符号相等,常用于代替对象和映射的字符串键,确保使用正确的已知键。

let a = Symbol("a");
let b: symbol = Symbol("b");
unique symbol类型

使用const 定义得symbol类型,唯一且不可修改。所以如果显视定义unique symbol类型必须使用const

const e = Symbol("e"); // TS推导为unique  symbol类型
const f: unique symbol = Symbol("f"); // 显视定义必须为const
对象

声明方式

  1. 声明为object类型object类型object类型
    object类型只能表示他是一个JS对象,并且不是null,并不能明确告知TS里面存在得属性

    const a:object={
        b:'x'
    }
    console.log(a.b)// 会报错,原因就是bject类型只能表示他是一个JS对象,并且不是null,并不能明确告知TS里面存在得属性
    

    2.对象字面量句法(由TS自动推导出类型结构)

    let a = {
      name: "123", // ts将推导出类型为{name:string1}
    };
    

​ 3.显式表示对象类型结构(明确类型结构在赋值)

let a: {
  name: string;
} = {
  name: "123",
};

​ 4.使用空对象类型{},除null和undefined之外的任何类型都可以赋值给空对象类型==(尽量避免使用)==

let danger:{}
danger=123;
danger=[];
  1. 使用Object定义对象==(尽量避免使用)==

    Object定义的类型必须颗赋值给Object原型内置类型

    let danger: {};
    danger = 123;
    danger = [];
    let b: Object = {
      toString() {
        return "13";
      },
    };
    let c: Object = {
        toString() {
          return "13";
        },
        sayName(){
            return 123
        }
      };
    c.toString()// 13
    c.sayName() // 报错因为sayName不属于原型方法
    

如果对象可能缺少某个属性,使用?表示该属性可能不存在

可以给该类型赋值undefined,(JS对象属性值不存在就是undefined)

let a: {
  name: string;
  age?:number
} = {
  name: "123",
};

动态属性(使用索引签名表示可能会有更多得键)

let a: {
  [statNumber: string]: string;
} = {
  name: "123",
};
a.age="456"; //  动态添加属性

索引签名优先级,索引属性string的优先级最高

[index:number]最终也会转换为[index:string]

let a: {
  [statNumber: string]: string;
  [key: number]: boolean; // 报错“number”索引类型“boolean”不能分配给“string”索引类型“string”,因为string级别最高而且number会转换为string,所以不行
} = {
  name: "123",
};

参考文档:https://www.codenong.com/cs106925087/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值