typescript修炼指南(一)

简介: typescript修炼指南(一)

大纲

本章主要讲解数据类型,涉及以下内容:

  • 原始数据类型: boolean number string void null undefined
  • 特殊数据类型:  any unknown nerver
  • 其它数据类型:  array tuple object enum


原始数据类型

  • 1.布尔类型
const bool: boolean = true // 注意小写
复制代码


  • 2.数值类型
const num: number = 123  // 数字可以是二进制 十进制 十六进制
 // 还有一个表示最大整数的 类型 bigint
let bignum: bigint;  //它只属于bigint类型而不是number类型
复制代码


  • 3.字符串类型
const str: string = 'hello'
复制代码


  • 4.空值
const b: void = undefined
// 或者函数无返回值
function test(): void { // ...code }
复制代码


  • 5.null 和 undefined
const u: undefined = undefined
const n: null = null
复制代码


特殊类型

  • 1.any 可以是任意类型 --- 这种情况下并不安全 不会进行任何类型检查
const an: any = true // 可以是布尔类型
复制代码


  • 2.unknown 跟any一样可以是任意类型,但会进行类型检查 -- 相对安全
const un: unknown = 123
un.clear = 1; // Object is of type 'unknown'
const anm: any = 123
anm.clear = 1;  // 不会报任何错误 --- 实际编译的时候是报错的 因为没有clearn属性 但不是报类型错误
复制代码


  • 3.nerver 永远无返回值的情况下(对nerver类型没有过多研究QAQ,欢迎大家评论区补充)
// 多数在抛出异常的时候 永远没有返回值 或者空数组(永远都是空的数组)
const arr: never[] = []
function err(message: string): never {
    throw new Error(message)
}
复制代码


其他类型

  • 1.数组
const arr1: [] = [] // 定义一个空数组
const arr2: number[] = [1,2,3] // 定义指定类型
const arr3: Array<number> = [] // 同上
const arr4: Array<number | string> = [1,'1',true] // 必须是数字或者字符串类型否则报错
复制代码


  • 2.元祖 定义: 个数,类型,顺序一致 有点数组的味道 相对严格
let tup: [string,number,boolean]
tup = ['1'] // Error
tup = [1,1,true] // Error
tup = ['1',1,true] // ok
复制代码


  • 3.对象类型(--- 除了原始类型以外的类型  number,string,boolean,symbol,null 或 undefined)
let obj: object
obj = {}
obj = 1 // 报错: 因为是原始类型
复制代码


  • 4.枚举类型(当一个变量存在多种类型选择的时候)
// 默认的枚举类型是数值类型且依次累加1
enum Nums {
    one,
    two,
    three,
    four
}
console.log(Nums.one, Nums.two, Nums.three, Nums.four) // 0 1 2 3
复制代码


这时候我们个第一个one赋值会发现在第一个值基础上累加:

// Nums.one = 100  报错: 枚举类型是只读类型
    enum Nums1 {
        one = 100,
        two,
        three,
        four
    }
console.log(Nums1.one, Nums1.two, Nums1.three, Nums1.four) // 100 101 102 103
复制代码


也可以赋值字符串也可以混用类型:

// 也可以是字符串类型
    enum Str {
        s1 = 's1',
        s2 = 's2'
    }
console.log(Str.s1, Str['s2'])
// 也可以是类型混用  --- 这种情况比较少用
enum En {
    s1 = 1,
    s2 = 's2'
}
复制代码


枚举具有反射性(可以根据值拿到name)

enum En {
    s1 = 1,
    s2 = 's2'
}
console.log(En[1]) // s1  --- 这里能获取到s1的原因是枚举具有反射性 --- key <=> val
复制代码


当然也可以给一个常量赋值:

const enu = En.s1
// 最终编译是: var enu = 1 如果要保留枚举对象:加上编译参数 --preserveConstEnums
复制代码


当声明多个相同的枚举对象时会合并:

enum en1 {
        e1 = 1
    }
enum en1 {
    e2 = 1
}
enum en1 {
    e3 = 1
}
console.log(en1) // 1: "e3", e1: 1, e2: 1, e3: 1}


相关文章
|
6月前
|
JavaScript 前端开发 安全
TypeScript五
TypeScript是面向对象的JavaScript超集,支持类、接口等OOP特性。类通过`class`定义,包括字段、构造函数和方法。例如,`Car`类有`engine`字段、构造函数和`disp`方法。类间可实现继承,如`Circle`继承`Shape`。TypeScript不支持多重继承,但允许多重继承链。`static`关键字定义静态成员,`instanceof`检查对象类型,访问控制修饰符(public, protected, private)管理访问权限。类能实现接口,如`AgriLoan`实现`ILoan`。 TypeScript对象是类型实例,
|
6月前
|
存储 JavaScript
TypeScript三
在 TypeScript 中,数组可以通过类型定义,如 `number[]` 或 `string[]`。示例展示了数字和字符串数组的声明与访问。数组解构允许将数组元素赋值给多个变量。通过 `for...in` 循环可遍历数组。多维数组如 `number[][]` 存储嵌套数组。数组方法包括:`concat()` 连接数组,`every()` 检查所有元素是否满足条件,`filter()` 过滤符合条件的元素,`forEach()` 对每个元素执行回调,`indexOf()` 查找元素位置,`join()` 将数组转为字符串,`map()` 应用函数于每个元素并返回新数组
|
5月前
|
JavaScript
typescript Any
typescript Any
|
6月前
|
JavaScript 前端开发 开发者
TypeScript一
JavaScript开发迅速但维护成本高,适合小型项目,因其动态类型导致编辑器提示不全。TypeScript是JS超集,增加了类型系统,提高开发效率和代码质量。安装TypeScript需先安装Node.js,然后通过npm安装tsc。案例演示创建`.ts`文件,转换成`.js`并运行。TypeScript支持多种数据类型,如any、number、string等,并有严格变量声明和函数定义规则,包括函数重载和匿名函数。
|
6月前
|
JavaScript 前端开发
TypeScript二
JavaScript Number对象包含多种方法,如`toExponential()`将数值转化为指数形式,`toFixed()`保留指定位数的小数,`toLocaleString()`按本地格式显示数字,`toPrecision()`格式化数字到指定长度,`toString()`以指定基数表示数字,而`valueOf()`返回原始数值。此外,示例中还展示了Date对象的格式化方法。对于String对象,有`constructor`返回创建对象的函数,`length`获取字符串长度,`prototype`用于扩展对象,以及一系列如`charAt()`、`indexOf()
|
JavaScript
【TypeScript理解】
【TypeScript理解】
|
JavaScript 前端开发
初识 TypeScript 二。
初识 TypeScript 二。
初识 TypeScript 二。
|
Rust JavaScript 前端开发
C# 是 TypeScript 的最佳替补?
C# 是 TypeScript 的最佳替补?
278 0
C# 是 TypeScript 的最佳替补?