TypeScript(二)基本类型和特殊类型

简介: TypeScript(二)基本类型和特殊类型

前言

距离上篇博客已有两年了,对TS也有了一定的认识,于是计划继续更新系列文章

本文收录于TypeScript知识总结系列文章,欢迎指正!

基本数据类型

在TS中,基本数据类型有:Boolan(布尔),Number(数字),String(字符串),Null(空值),Undefined(未定义),Symbol(标识符,ES6新增),Bigint(任意位整数,精度在53位以内,ES10新增)。

除了上面的基本类型外,还有Void(缺少值)通常表示函数无返回值,any(任意值),

never(永无),unknown(未知)这些特殊类型

变量定义

在JavaScript中,我们通常使用var定义变量,在es6中新增了let和const的声明变量的支持,用法和var一样,通过var 变量名或var 变量名=赋值来定义新的变量。
而在TypeScript中,我们同样可以使用以上方法定义新的变量

let _boolean = false
var _string = 'hello'
const _num = 1024

但是由于TS是强类型语言,所以我们声明变量时需要对变量类型做一个类型的定义,否则就和写JS一样了

变量关键字 变量名:变量类型=变量值
let _boolean: boolean = false
var _string: string = 'hello'
const _num: number = 1024

用法

Boolan(布尔)

布尔值,只能是truefalse

const bool: boolean = false // 基本用法
const bool1: boolean = Boolean() // 函数传undefined默认false
const bool2: boolean = Boolean(true) // 函数
const bool3: boolean = new Boolean(false).valueOf();// 构造函数

Number(数字)

数字,包括整数和浮点数

const num: number = 10// 默认十进制
const num1: number = 0b01011// 二进制
const num2: number = 0o14567// 八进制
const num3: number = 0xffaec// 十六进制
const num4: number = NaN// 非数字
const num5: number = Infinity// 无穷
const num6: number = 1.5// 小数
const num7: number = 19e3// 科学计数法

String(字符串)

字符串,可以使用单引号、双引号或反引号 ` ` 表示

const str: string = "zhangsan"// 字符串
const str1: string = '张三' // 中文
const str2: string = `I am ${str}` // 字符串模板

Null(空值)和Undefined(未定义)

null通常表示一个变量的值是空或不存在,而undefined表示一个变量未被赋值或未定义

let val: null = null // val只能等于null
let val1: undefined = undefined // val1只能等于undefined
val = 1 // 抛错,无法赋值
val1 = 2 // 抛错,无法赋值

null和undefined是所有类型的子集,也就是变量初始状态都可以写成null和undefined

let val:number= null
val = 1 

Symbol(标识符)

唯一的值,常用于对象属性的键

const sym: symbol = Symbol("abc")
const sym1: symbol = Symbol(123)

Bigint(长整数)

表示大于2^53-1的整数

const big: bigint = 12345n
const big1: bigint = BigInt(111)

Void(缺少值)

void通常用来表示函数没有返回值,当然也可以使用null和undefined赋值(在严格模式下,null不能赋值给void类型)

tips:void 0可以看作undefined,一般可以使用val===void 0 判断值是否是undefined(因为在IE8中undefined可以被修改为其他值,使用void 0可以保证获得的是一个undefined值)

const vo: void = null // 严格模式下会报错
const vo1: void = undefined
const fn = (): void => {
    const str: string = 'hello'
    console.log(str)
    return void 0 // 不写这句默认会给提示:"fn" doesn't return anything
}
const vo2: void = fn()

any(任意值)

any用来表示可以赋予任意类型的值。任何类型都可以赋值给 any 类型的变量

在ts中声明了一个类型的变量无法赋值另一种类型的值,如:

let val: number = 0
val = "a"// 报错:不能将类型“string”分配给类型“number”

但是如果加上any类型,就可以像js一样进行不同类型数据赋值

let val: any = 0
val = "a"
val = false

never(永无)

never表示表示那些永远不会发生的值,它一般出现在函数的返回值或者是永远不可能被执行的代码中,比如死循环

const fn = function (): never {
    while (true) {
        console.log("死循环");
    }
}

或者是抛错

const fn = function (): never {
    throw Error("抛错")
}

初始化一个不存在的变量

let nev:never

与void不同的是,它表示不存在,而void表示没有类型

unknown(未知)

unknown类似于any,与any不同的是,它会在编译时检查,减少错误。

any可以与其他类型互相赋值,但是unknown不行,在做类型检查或者类型断言之前(断言会出现在后续文章中,表示类型转换),无法对其类型做修改,下面是一个例子,如果直接赋值给str1,会出现无法赋值的错误

let str: unknown
const str1: string = str

正确使用方式是对类型做判断后再进行赋值

let str: unknown
if (typeof str === "string") {
    const str1: string = str
}

tips:日常使用中建议使用unknown代替any,使用unknown能够提高代码的类型安全性和可读性

写在最后

本文介绍了TS中的基础数据类型以及特殊类型的定义及用法。

最后感谢你看到这里,如果文章对你有帮助,还请支持一下,谢谢!


相关文章
|
28天前
|
设计模式 JavaScript 安全
TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等
本文深入探讨了TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等,旨在帮助开发者在保证代码质量的同时,实现高效的性能优化,提升用户体验和项目稳定性。
42 6
|
27天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
36 2
|
1月前
|
JavaScript 安全 前端开发
TypeScript类型声明:基础与进阶
通过本文的介绍,我们详细探讨了TypeScript的基础与进阶类型声明。从基本数据类型到复杂的泛型和高级类型,TypeScript提供了丰富的工具来确保代码的类型安全和可维护性。掌握这些类型声明能够帮助开发者编写更加健壮和高效的代码,提高开发效率和代码质量。希望本文能为您在使用TypeScript时提供实用的参考和指导。
36 2
|
1月前
|
JavaScript 开发者
在 Babel 插件中使用 TypeScript 类型
【10月更文挑战第23天】可以在 Babel 插件中更有效地使用 TypeScript 类型,提高插件的开发效率和质量,减少潜在的类型错误。同时,也有助于提升代码的可理解性和可维护性,使插件的功能更易于扩展和升级。
|
2月前
|
JavaScript 前端开发
TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第11天】TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
2月前
|
JavaScript 前端开发 安全
TypeScript【基础类型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第9天】TypeScript【基础类型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
2月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与最佳实践
【10月更文挑战第8天】深入理解TypeScript:类型系统与最佳实践
|
2月前
|
移动开发 JavaScript 前端开发
TypeScript:数组类型&函数使用&内置对象
本文介绍了 TypeScript 中的数组类型、对象数组、二维数组、函数、函数重载、内置对象等概念,并通过代码示例详细展示了它们的使用方法。还提供了一个使用 HTML5 Canvas 实现的下雨效果的小案例。
|
2月前
|
JavaScript 前端开发 开发者
TypeScript :基本配置&数据的基本类型
本文介绍了TypeScript的安装、常见问题及解决方案、配置与使用方法。包括通过npm全局安装TypeScript、设置PowerShell执行策略、初始化项目、配置模块声明、处理数据类型等。详细步骤和代码示例帮助开发者快速上手。
|
1月前
|
JavaScript 前端开发 安全
TypeScript进阶:类型系统与高级类型的应用
【10月更文挑战第25天】TypeScript作为JavaScript的超集,其类型系统是其核心特性之一。本文通过代码示例介绍了TypeScript的基本数据类型、联合类型、交叉类型、泛型和条件类型等高级类型的应用。这些特性不仅提高了代码的可读性和可维护性,还帮助开发者构建更健壮的应用程序。
31 0
下一篇
DataWorks