iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Typescript的基本使用方法有哪些
  • 326
分享到

Typescript的基本使用方法有哪些

2024-04-02 19:04:59 326人浏览 薄情痞子
摘要

本篇内容主要讲解“typescript的基本使用方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Typescript的基本使用方法有哪些”吧!超集是集合

本篇内容主要讲解“typescript的基本使用方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Typescript的基本使用方法有哪些”吧!

超集是集合论的术语

说到超集,不得不说另一个,子集,怎么理解这两个概念呢,举个例子

如果一个集合A里面的的所有元素集合B里面都存在,那么我们可以理解集合A是集合B的子集,反之集合B为集合A的超集

现在我们就能理解为 Typescript 里包含了 javascript  的所有特性,这也意味着我们可以将.js后缀直接命名为.ts文件跑到TypeScript的编绎系统中

Typescript 解决了什么问题

一个事物的诞生一定会有其存在的价值

那么 Typescript 的价值是什么呢?

回答这个问题之前,我们有必要先来了解一下 Typescript 的工作理念

本质上是在 JavaScript 上增加一套静态类型系统(编译时进行类型分析),强调静态类型系统是为了和运行时的类型检查机制做区分,TypeScript  的代码最终会被编译为 JavaScript

我们再回到问题本身,缩小一下范围,Typescript 创造的价值大部分是在开发时体现的(编译时),而非运行时,如

  • 强大的编辑器智能提示 (研发效率,开发体验)

  • 代码可读性增强 (团队协作,开发体验)

  • 编译时类型检查 (业务稳健,前端项目中Top10 的错误类型低级的类型错误占比达到70%)

变量申明

基本类型

let isDone: boolean = false let num: number = 1 let str: string = 'vue3js.cn' let arr: number[] = [1, 2, 3]  let arr2: Array<number> = [1, 2, 3] // 泛型数组 let obj: Object = {} let u: undefined = undefined; let n: null = null;

类型补充

  • 枚举 Enum

使用枚举类型可以为一组数值赋予友好的名字

enum LogLevel {   info = 'info',   warn = 'warn',   error = 'error', }
  • 元组 Tuple

允许数组各元素的类型不必相同。比如,你可以定义一对值分别为 string和number类型的元组

// Declare a tuple type let x: [string, number]; // Initialize it x = ['hello', 10]; // OK // Initialize it incorrectly x = [10, 'hello']; // Error
  • 任意值 Any

表示任意类型,通常用于不确定内容的类型,比如来自用户输入或第三方代码库

let notSure: any = 4; notSure = "maybe a string instead"; notSure = false; // okay, definitely a boolean
  • 空值 Void

与 any 相反,通常用于函数,表示没有返回值

function warnUser(): void {     console.log("This is my warning message"); }
  • 接口 interface

类型契约,跟我们平常调服务端接口要先定义字段一个理

如下例子 point 跟 Point 类型必须一致,多一个少一个也是不被允许的

interface Point {     x: number     y: number     z?: number     readonly l: number } const point: Point = { x: 10, y: 20, z: 30, l: 40 } const point2: Point = { x: '10', y: 20, z: 30, l: 40 } // Error  const point3: Point = { x: 10, y: 20, z: 30 } // Error  const point4: Point = { x: 10, y: 20, z: 30, l: 40, m: 50 } // Error

可选与只读 ? 表示可选参, readonly 表示只读

const point5: Point = { x: 10, y: 20, l: 40 } // 正常 point5.l = 50 // error

函数参数类型与返回值类型

function sum(a: number, b: number): number {     return a + b }

配合 interface 使用

interface Point {     x: number     y: number }  function sum({ x,  y}: Point): number {     return x + y }  sum({x:1, y:2}) // 3

泛型

泛型的意义在于函数的重用性,设计原则希望组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型

  • 比如

根据业务最初的设计函数 identity 入参为String

function identity(arg: String){  return arg } console.log(identity('100'))

业务迭代过程参数需要支持 Number

function identity(arg: String){  return arg } console.log(identity(100)) // Argument of type '100' is not assignable to parameter of type 'String'.

为什么不用any呢?

使用 any 会丢失掉一些信息,我们无法确定返回值是什么类型

泛型可以保证入参跟返回值是相同类型的,它是一种特殊的变量,只用于表示类型而不是值

语法(arg:T):T 其中T为自定义变量

const hello : string = "Hello Vue!" function say<T>(arg: T): T {     return arg; } console.log(say(hello)) // Hello vue!

泛型约束

我们使用同样的例子,加了一个console,但是很不幸运,报错了,因为泛型无法保证每种类型都有.length 属性

const hello : string = "Hello vue!" function say<T>(arg: T): T {  console.log(arg.length) // Property 'length' does not exist on type 'T'.     return arg; } console.log(say(hello)) // Hello vue!

从这里我们也又看出来一个跟any不同的地方,如果我们想要在约束层面上就结束战斗,我们需要定义一个接口来描述约束条件

interface Lengthwise {     length: number; }  function say<T extends Lengthwise>(arg: T): T {  console.log(arg.length)     return arg; } console.log(say(1))  // Argument of type '1' is not assignable to parameter of type 'Lengthwise'. console.log(say({value: 'hello vue!', length: 10})) // { value: 'hello vue!', length: 10 }

交叉类型

交叉类型(Intersection Types),将多个类型合并为一个类型

interface foo {     x: number } interface bar {     b: number } type intersection = foo & bar const result: intersection = {     x: 10,     b: 20 } const result1: intersection = {     x: 10 }  // error

联合类型

交叉类型(UNIOn Types),表示一个值可以是几种类型之一。我们用竖线 | 分隔每个类型,所以 number | string |  boolean表示一个值可以是 number, string,或 boolean

type arg = string | number | boolean const foo = (arg: arg):any =>{      console.log(arg) } foo(1) foo('2') foo(true)

函数重载

函数重载(Function Overloading),  允许创建数项名称相同但输入输出类型或个数不同的子程序,可以简单理解为一个函数可以执行多项任务的能力

例我们有一个add函数,它可以接收string类型的参数进行拼接,也可以接收number类型的参数进行相加

function add (arg1: string, arg2: string): string function add (arg1: number, arg2: number): number  // 实现 function add <T,U>(arg1: T, arg2: U) {   // 在实现上我们要注意严格判断两个参数的类型是否相等,而不能简单的写一个 arg1 + arg2   if (typeof arg1 === 'string' && typeof arg2 === 'string') {     return arg1 + arg2   } else if (typeof arg1 === 'number' && typeof arg2 === 'number') {     return arg1 + arg2   } }  add(1, 2) // 3 add('1','2') //'12'

到此,相信大家对“Typescript的基本使用方法有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Typescript的基本使用方法有哪些

本文链接: https://www.lsjlt.com/news/84632.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Typescript的基本使用方法有哪些
    本篇内容主要讲解“Typescript的基本使用方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Typescript的基本使用方法有哪些”吧!超集是集合...
    99+
    2022-10-19
  • Vue3中Typescript的基本使用方法有哪些
    这篇文章主要介绍“Vue3中Typescript的基本使用方法有哪些”,在日常操作中,相信很多人在Vue3中Typescript的基本使用方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3中Ty...
    99+
    2023-06-27
  • TypeScript基本的语法有哪些
    本篇内容主要讲解“TypeScript基本的语法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“TypeScript基本的语法有哪些”吧!前端那么多酷炫的东西,真是太好玩了。但是,JavaS...
    99+
    2023-06-16
  • TypeScript基本类型有哪些
    今天小编给大家分享一下TypeScript基本类型有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2022-10-19
  • vim的基本使用方法有哪些
    本文小编为大家详细介绍“vim的基本使用方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“vim的基本使用方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Vim(Vi[Improved])编辑器是...
    99+
    2023-06-27
  • Hive的基本使用方法有哪些
    这篇文章主要介绍“Hive的基本使用方法有哪些”,在日常操作中,相信很多人在Hive的基本使用方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hive的基本使用方法有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-27
  • MySQL的基本使用方法有哪些
    今天小编给大家分享一下MySQL的基本使用方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。MySQL 是最流行的关系...
    99+
    2023-06-27
  • Git的基本使用方法有哪些
    这篇文章主要介绍了Git的基本使用方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管...
    99+
    2023-06-27
  • Kafka基本使用方法有哪些
    Kafka的基本使用方法包括以下几个方面:1. 安装和配置:首先需要在服务器上安装Kafka,并进行必要的配置,例如指定监听端口、设...
    99+
    2023-09-13
    Kafka
  • netstat基本使用方法有哪些
    本文小编为大家详细介绍“netstat基本使用方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“netstat基本使用方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。netstat命令是一个监控T...
    99+
    2023-06-27
  • Git基本使用方法有哪些
    这篇文章主要介绍了Git基本使用方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。创建版本库$ git clone   ...
    99+
    2023-06-27
  • rsync基本使用方法有哪些
    这篇文章主要讲解了“rsync基本使用方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“rsync基本使用方法有哪些”吧!rsync是可以实现增量备份的工具。配合任务计划,rsync能...
    99+
    2023-06-27
  • Dockerfile基本使用方法有哪些
    本篇内容主要讲解“Dockerfile基本使用方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Dockerfile基本使用方法有哪些”吧!Dockerfile的组成Dockerfile分...
    99+
    2023-06-28
  • SQLite3基本使用方法有哪些
    本文小编为大家详细介绍“SQLite3基本使用方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“SQLite3基本使用方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、基本语法1.常用指令.op...
    99+
    2023-07-02
  • Typescript的基础语法有哪些
    这篇文章主要为大家展示了“Typescript的基础语法有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Typescript的基础语法有哪些”这篇文章吧。一.Ts是什么首先,强类型不允许随意...
    99+
    2023-06-22
  • Python类的基本使用方法有哪些
    1、面向对象类(class):是一种用来描述具有相同属性和方法的对象的集合。类变量:类变量在整个实例化的对象中是公用的。一般定义在类中且在函数体之外。方法:类中的函数数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。方法重写:...
    99+
    2023-05-18
    Python
  • view命令基本的使用方法有哪些
    view命令是一种用于查看文件内容的命令,常用的使用方法有:1. 查看文件内容:view filename2. 同时查看多个文件:v...
    99+
    2023-09-16
    view
  • insert语句的基本使用方法有哪些
    插入语句的基本使用方法如下:1. 插入单行数据:```INSERT INTO table_name (column1, column...
    99+
    2023-06-14
    insert语句
  • update语句的基本使用方法有哪些
    1. 修改单个列的值:```sqlUPDATE 表名 SET 列名=新值 WHERE 条件;```示例:```sql...
    99+
    2023-06-13
    update语句
  • Python闭包的基本使用方法有哪些
    这篇文章主要介绍“Python闭包的基本使用方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python闭包的基本使用方法有哪些”文章能帮助大家解决问题。什么是闭包闭包(Closure)是一...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作