Ts 的基础笔记

原始数据类型

TS 作为 JS 的超集,必然包含 JS 所有的数据类型,它们分别是:

 Boolean       布尔值
 Number        数值
 String        字符串
 Function      函数
 Array         数组
 Object        对象
 NaN           计算错误
 undefined     未定义
 null          空

除此之外,TS 还新增了以下的数据类型:

 void          要求表达式的值是undefined
 any           任意值
 never         永不存在 
 元组          固定长度的数组
 enum          枚举
 unknown       未知类型

联合类型

  • 联合类型(Union Types)表示取值可以为多种类型中的一种。
    语法格式:
let 变量:类型1 | 类型2
 `也可直接字面量直接赋值`

    列子:
let myFavoriteNumber: string | number;
    myFavoriteNumber = true;  //报错
// myFavoriteNumber 类型指定了 只能是string 和 number 类型 直接赋予布尔值是不准予的

类型断言

  • 类型断言(Type Assertion )可以用来手动指定一个值的类型。
   语法格式:
值 as 类型  或  <类型>// 创建一个person来存储人的信息 这个信息呢我们需要想后台请求的时候才能获取数据赋值给person
let person ={}
console.log(person.name)
// 此时person数据还没有请求到 person此时没有name属性 我们直接访问name ts检测时会报错!!

    改为

let person ={} as any
// let person = <any>{} 这种写法也是相同的  但在jsx中得用 as 语法
console.log(person.name)

// 加了 类型断言 表示告诉ts指定person类型值任意类型 这样就可跳过检测了


接口 ( interface )

  • 在 TypeScript 中,我们使用接口(Interfaces)来定义对象或函数参数的类型。
   语法格式:

interface Person {
    name: string;
    age?: number;
   [propName: string]: any;
}

let tom: Person = {
    name: 'Tom',
    age: 25
};

// 我们定义了一个接口 Person,接着定义了一个变量 tom,它的类型是 Person。这样,我们就约束了 tom 的形状必须和接口 Person 一致。 属性必须得是跟接口是一致的不能多 不能少 不然会报错

// name : string             必须值    有一个 key为name 值必须是字符串
// age? : number             age可选值 表示这个属性可有可没有 有 值就得是数值
// [propName:string] : any   任意属性  一般都定义在接口的最后一个属性 接口定义这个属性后 tom就可以增加任意属性


函数

  • 在 ts 中函数 输入多余的(或者少于要求的)参数,不符合返回的类型 ,都是不被允许的
   语法格式:

(参数:类型):函数返回值的类型=>{}

     案列:

function buildName(firstName: string, lastName: string = 'Cat', lastName?: string):string{
    return firstName + ' ' + lastName;
}

let tomcat = buildName('Tom', 'Cat','Dog');       //  报错 多了一个参数
let tom = buildName('Tom');                       //  报错 少了一个参数

// lastName?: string ----- 加了问号的表示可选参数非必填 但后面不允许再出现必需参数了
// lastName: string = 'Cat' -----设置参数默认值并限制了类型

数组

  • 规定了 数据中每个元素的类型
  语法格式:

let 变量:类型[]

      ||   等价于

let 变量:Array<类型>

let a:string[] = ["1","2"] // 正常
let a:string[] = ["1",2]   // 报错
// 指定了类型 数组里的元素得和指定的类型一样

元组

  • 简单理解就是固定长度的数组
  语法格式:
let tom: [string, number];
tom[0] = "Mike"   // 可以只赋值其中一项
tom = ['Tom'];    // 报错
//  元组在声名时 数组的长度就规定了 在赋值时数量需要一致 单个赋值不会报错
//  任何修改数组结构的方法都是不可以的 如:push splice

枚举

  • 枚举(Enum)类型用于取值被限定在一定范围内的场景,比如一周只能有七天,颜色限定为红绿蓝等。枚举成员会被赋值为从 0 开始递增的数字,同时也会对枚举值到枚举名进行反向映射,也可以当成类型使用,这样值只能是枚举中的值。
enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};

console.log(Days["Sun"] === 0);  // true
console.log(Days["Mon"] === 1);  // true

console.log(Days[0] === "Sun");  // true
console.log(Days[1] === "Mon");  // true
// 反向映射 根据值(依次递增)得到键名 根据键名得到值

enum Days {Sun = 7, Mon = 1, Tue, Wed, Thu, Fri, Sat};
console.log(Days["Tue"] === 2); // true
// 即使中途修改了值 那么它也会重最后的一个值 往下进行反向映射

let a:Days = "Hepta"  // 报错
let b:Days = Days.Sun // 以枚举作为类型值只能是枚举中的值

声名合并

  • 如果定义了两个相同名字的函数、接口或类,那么它们会合并成一个类型
   接口合并

interface Alarm {
    price: number;
}
interface Alarm {
    weight: number;
}

     相当于:

interface Alarm {
    price: number;
    weight: number;
}

// 合并的属性的类型必须是唯一的

官方学习文档 查看详情内容

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TSTypeScript)是一种静态类型检查的高级编程语言,它是JavaScript的超集。在TS基础类型和泛型都是其重要的概念。 基础类型指的是TS预定义的简单数据类型,例如:number、string、boolean、null、undefined等。基础类型用于表示变量或函数的数据类型,可以直接赋值给变量,也可以用作函数的参数和返回值类型。基础类型的定义和使用非常简单,只需要在变量或函数的类型声明指定即可。 泛型(Generic)是一种在编程广泛使用的概念,它允许我们在定义函数、类或接口时使用可变的类型。使用泛型可以提高代码的复用性和灵活性。在TS,使用<>符号来声明使用泛型,并通过类型参数来指定具体的类型。 例如,定义一个泛型函数: function identity<T>(arg: T): T { return arg; } 这个函数使用了泛型类型参数T,可以接受不同类型的实参,并返回相同类型的值。通过使用泛型,我们可以传入任意类型的参数,而不需要重写多个函数。 另外,在TS还可以使用泛型约束来限制泛型类型的操作。通过在泛型类型参数后面添加extends关键字和约束类型,可以确保传入的类型必须满足特定条件。 总结起来,TS基础类型和泛型都是为了增强代码的可读性、可维护性和可靠性而设计的。基础类型用于定义简单的数据类型,而泛型则用于创建更灵活和可复用的函数、类和接口。在实际开发,合理使用基础类型和泛型,可以提高代码的质量和开发效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值