typeScript第一篇 基础类型、任意类型、接口和对象类型、数组类型、函数扩展、(类型断言 | 联合类型 | 交叉类型)

一. 基础类型

S是JS的超集,所以JS基础的类型都包含在内

起步安装 npm install typescript -g

运行tsc 文件名

基础类型:Boolean、Number、String、null、undefined 以及 ES6 的 Symbol 和 ES10 的 BigInt。

1. 字符串类型

字符串是使用string定义的

// 基本使用
let a:string = '222'

// 也可以使用 es6的字符串模板
let str: string = `wangsihua${
     aaa}`

其中 ` 用来定义 ES6 中的模板字符串,${expr} 用来在模板字符串中嵌入表达式。

2. 字符串类型

支持十六进制、十进制、八进制和二进制;

let notANumber: number =NaN;  // Nan
let num: number = 123;  //普通数字
let infinityNumber: number = Infinity; // 无穷大
let decimal: number = 6;   // 十进制
let hex: number = 0xf00d;  // 十六进制
let binary: number = 0b1010;  // 二进制
let octal: number =0o744;  // 八进制

3. 布尔类型

注意,使用构造函数 Boolean 创造的对象不是布尔值:

let createdBoolean: boolean = new Boolean(1) // 错的

new Boolean(1)  返回的是一个 Boolean对象  不是值

事实上 new Boolean() 返回的是一个 Boolean 对象 需要改成
let createdBoolean: Boolean = new Boolean(1)

let booleand: boolean = true //可以直接使用布尔值
 
let booleand2: boolean = Boolean(1) //也可以通过函数返回布尔值

4. 空值类型 void

JavaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数

 function voidFn(): void {
   
 	console.log('test void')
 }

void 类型的用法, 主要是用在我们不希望调用者关心函数返回值的情况下,比如通常的异步回调函数

void 也可以定义 undefined 和 null 类型

let u: void = undefined
let u: void = null

5. Null 和 undefined 类型

let u: undefined = undefined;
let u: null = null

void 和 undefined 和 null 最大的区别

与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 string 类型的变量:

let test: void = undefined
let num2: string = "1"

num2 = test
// 会报错。  void类型 不可以分给其他类型 
let test: undefined = undefined
let num: string = "1"
num = test

let test1: null = null
let num2: string = "2"
num2 = test2

// 这两个写法则没有问题

TIPS 注意:

如果你配置了tsconfig.json 开启了严格模式

{
   
    "compilerOptions":{
   
        "strict": true
    }
}

也就是
let n: void = null;   // 如果开了严格模式 这里会报错
let u: void = undefined;

console.log(u,u)

null 不能 赋予 void 类型

二. 任意类型

Any 类型 和 unknown 顶级类型

1.没有强制限定哪种类型,随时切换类型都可以 我们可以对 any 进行任何操作,不需要检查类型

let anys: any = 123
anys = '123'
anys = true
anys = undefined
anys = null

2.声明变量的时候没有指定任意类型 默认为 any


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,让我来回答你的问题。 1. TypeScript类型保护与区分类型 类型保护是 TypeScript 中用来区分不同类型的机制,可以通过 typeof、instanceof、in 等运算符来实现。例如: ```typescript function printLength(strOrArr: string | any[]) { if (typeof strOrArr === 'string') { console.log(strOrArr.length); // string类型 } else { console.log(strOrArr.length); // 数组类型 } } ``` 2. TypeScript联合类型 联合类型是指变量可以是多种不同类型之一,可以使用“|”符号将多个类型组合起来。例如: ```typescript let numOrStr: number | string = 5; numOrStr = "hello"; ``` 3. TypeScript交叉类型 交叉类型是指将多个类型合并成一个类型,可以使用“&”符号将多个类型组合起来。例如: ```typescript interface A { a: number; } interface B { b: string; } type C = A & B; const c: C = { a: 1, b: "hello" }; ``` 4. TypeScript类型别名 类型别名是为一个类型定义一个别名,可以使用“type”关键字来定义。例如: ```typescript type MyString = string; const str: MyString = "hello"; ``` 5. TypeScript接口 vs. 类型别名 接口类型别名都可以用来定义类型,但有一些不同之处。接口可以被类实现,也可以被扩展,而类型别名只能定义别名。例如: ```typescript interface Person { name: string; age: number; } type PersonAlias = { name: string; age: number; }; class Student implements Person { name: string; age: number; grade: number; constructor(name: string, age: number, grade: number) { this.name = name; this.age = age; this.grade = grade; } } type StudentAlias = PersonAlias & { grade: number; }; const student: StudentAlias = { name: "Tom", age: 18, grade: 3 }; ``` 6. TypeScript 的字符串字面量类型 字符串字面量类型是指将字符串字面量作为类型,可以使用“|”符号将多个字符串字面量组合起来。例如: ```typescript type Gender = "male" | "female"; interface Person { name: string; age: number; gender: Gender; } const person: Person = { name: "Tom", age: 18, gender: "male" }; ``` 希望这些解释能够对你有所帮助。如果你还有其他问题,可以继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值