TypeScript 定义不同的类型(详细示例)

news2024/11/15 11:06:30

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。

No.内容链接
1Openlayers 【入门教程】 - 【源代码+示例300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3Cesium 【入门教程】 - 【源代码+图文示例200+】
4MapboxGL【入门教程】 - 【源代码+图文示例150+】
5前端就业宝典 【面试题+详细答案 1000+】

在这里插入图片描述

文章目录

      • 1. 基本类型
      • 2. 数组
      • 3. 元组 Tuple
      • 4. 枚举 Enum
      • 5. 对象类型
      • 6. 函数类型
      • 7. 类型别名 Type Alias
      • 8. 泛型 Generics
      • 9. 类 Class
      • 10. 接口 Interface


TypeScript 是 JavaScript 的一个超集,它增加了静态类型系统和一些额外的特性来帮助开发者编写可维护、可扩展的应用程序。在 TypeScript 中,你可以使用类型注解来指定变量、函数参数或返回值的类型。

下面我将通过一系列示例来展示如何在 TypeScript 中定义不同的类型:

1. 基本类型

基本类型的定义包括 stringnumberboolean 等。

let myName: string = "Alice";
let age: number = 30;
let isStudent: boolean = false;

2. 数组

数组可以定义为包含特定类型元素的列表。

let numbers: number[] = [1, 2, 3];
let fruits: string[] = ["apple", "banana"];
let truthValues: boolean[] = [true, false];

或者使用泛型数组形式:

let numbers: Array<number> = [1, 2, 3];

3. 元组 Tuple

元组允许表示一个已知元素数量和类型的数组。

let x: [string, number];
x = ["hello", 10]; // OK
// x = [10, "hello"]; // Error

4. 枚举 Enum

枚举类型为一组相关的名称提供了一种方便的方式来定义一个数值常量集合。

enum Color {Red, Green, Blue}
let c: Color = Color.Green;

5. 对象类型

对象类型可以通过接口(interface)或者类型别名(type alias)来定义。

interface Person {
    name: string;
    age?: number; // 可选属性
}

type Product = {
    id: number;
    title: string;
};

let person: Person = {name: "Alice"};
let product: Product = {id: 1, title: "Book"};

6. 函数类型

函数类型可以指定参数和返回值的类型。

function greet(person: string): string {
    return "Hello " + person;
}

// 或者
const add = (a: number, b: number): number => {
    return a + b;
};

7. 类型别名 Type Alias

类型别名用于给一个类型起个新名字。

type Name = string;
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;

function getName(n: NameOrResolver): Name {
    if (typeof n === 'string') return n;
    else return n();
}

8. 泛型 Generics

泛型允许创建重用性高的函数和类。

function identity<T>(arg: T): T {
    return arg;
}

let output = identity<string>("myString");

9. 类 Class

类支持面向对象编程。

class Animal {
    name: string;
    constructor(name: string) {
        this.name = name;
    }
}

let animal = new Animal("Cat");
console.log(animal.name); // 输出 "Cat"

10. 接口 Interface

接口描述了对象的形状。

interface LabelledValue {
    label: string;
    value: number;
}

function printLabel(labelledObj: LabelledValue) {
    console.log(labelledObj.label);
}

let myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj); // OK

这些示例覆盖了 TypeScript 中常见的类型定义方法。你可以根据自己的需求选择合适的类型定义方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1966391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音评论爬虫数据采集|抖音评论抓取工具|代码|源码

抖音评论提取软件使用说明 抖音视频评论提取到的内容&#xff1a;1&#xff1a;视频名称 2&#xff1a;视频作者 3&#xff1a;作者地址 4&#xff1a;视频地址 5&#xff1a;评论人昵称。6&#xff1a;评论人主页地址。7&#xff1a;评论内容 8&#xff1a;评论日期 软件支持…

我是客服新手,打字很慢,怎么办?

作为客服新手&#xff0c;打字速度缓慢可能影响工作效率&#xff0c;本文介绍了提高打字速度&#xff0c;以及使用聊天宝快捷回复工具等提效的诀窍 前言 我是客服新手&#xff0c;打字速度缓慢可能影响工作效率。本文将分享如何提高客服打字速度&#xff0c;包括使用聊天宝快捷…

协助我们进行论文写作的ChatGPT们究竟是如何工作的?

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 大型语言模型&#xff08;LLMs&#xff09;正在彻底改变我们与人工智能的互动方式&#xff0c;特别是在写作和创作领域。这些先进的人工智能系统不仅在改变作家和创作者的格局&#xff…

<数据集>遥感航拍飞机识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2398张 标注数量(xml文件个数)&#xff1a;2398 标注数量(txt文件个数)&#xff1a;2398 标注类别数&#xff1a;1 标注类别名称&#xff1a;[plane] 序号类别名称图片数框数1plane239815178 使用标注工具&#…

多微信管理不再难:聚合聊天神器助你轻松应对!

在当今社交媒体高度发达的时代&#xff0c;很多人都在使用多个微信账号来管理个人与工作联系。面对如此众多的信息沟通&#xff0c;如何高效管理成了一个难题。 幸运的是&#xff0c;聚合聊天神器的出现&#xff0c;彻底改变了这一局面&#xff0c;让我们轻松应对多微信账号的…

Flutter+Android/ios 桌面小组件

FlutterAndroid/ios 桌面组件 总结&#xff1a; Android和iOS 桌面小组件 需要原生去绘制小组件和更新数据&#xff0c;Flutter层 可以使用 MethodChannel 与原生 通信 来控制 更新数据&#xff0c;app无法主动控制 小组件的添加 和 删除&#xff0c; 只能是用户手动操作 。小…

利率虽降,贷款依旧难?政策暖风下的融资冷思考

​朋友们&#xff0c;最近听到不少人在吐槽贷款难的问题&#xff0c;咱们就来聊聊这背后的故事。你们知道吗&#xff1f;深圳的朱先生可是为这事儿头疼不已。他的公司急需一笔钱来结清货物尾款&#xff0c;可前一年的经营状况不佳&#xff0c;备用金早就见底了。朱先生四处求人…

随机化快速排序 python C C++ 图解 代码 及解析

一&#xff0c;概念及其介绍 快速排序由 C. A. R. Hoare 在 1960 年提出。 随机化快速排序基本思想&#xff1a;通过一趟排序将要排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据都要小&#xff0c;然后再按此方法对这两部分数据分别…

真假公主:一场容貌相似引发的宫廷阴谋

真假公主&#xff1a;一场容貌相似引发的宫廷阴谋 从古至今&#xff0c;每个人的心思都不相同&#xff0c;正如他们的面貌各不相同一样。即使人们的外貌没有明显的差异&#xff0c;但他们的内心和性格却是难以改变的。 话说人的面貌是最为独特的&#xff0c;因为每个人都是由不…

LNMP黄金架构搭建部署论坛网站

哈哈哈哈哈我终于部署出来了一个属于自己的论坛&#xff0c;虽然不怎么懂 部署Linux环境 关闭防火墙Systemctl stop firewalldSystemctl disable firewalld关闭selinuxSetence 0查看selinuxGeteforce 部署nginx环境 Yum i install httpd过滤apache的端口号看是否有80端口N…

移动自组织网络(MANET)与互联网连接的网关选择方案文献综述

以下内容节选自这篇综述论文《Gateway Selection Scheme for MANET to Internet Connectivity: A Survey》由Ritu Singh和Jay Prakash撰写&#xff0c;主要探讨了移动自组织网络&#xff08;MANET&#xff09;与互联网连接的网关选择方案。 在接下来的部分中&#xff0c;我们对…

gstreamer实现视频的3D旋转(一)的实现思路

效果&#xff1a; 一、实现思路 首先我们要知道&#xff0c;gstreamer有OpenGL相关的插件&#xff0c;网址如下&#xff1a; GstOpengl (gstreamer.freedesktop.org) 其中&#xff0c;有不少有趣的插件&#xff0c;比如我发现的gltransformation插件&#xff0c;可以实现OpenG…

甄选范文“论层次式架构在系统中的应用”软考高级论文系统架构设计师论文

论文真题 层次架构作为软件系统设计的一种基本模式,对于实现系统的模块化、可维护性和可扩展性具有至关重要的作用。在软件系统的构建过程中,采用层次架构不仅可以使系统结构更加清晰,还有助于提高开发效率和质量。因此,对层次架构的理解和应用是软件工程师必备的技能之一…

普元Devops学习笔记-devops对接jenkins提示crumb不可用问题

前言 普元devops需要对接jenkins&#xff0c;对接jenkins后&#xff0c;devops会调用jenkins的提供的API。 问题 新版本的jenkins提供跨域保护&#xff0c;即大名鼎鼎的CSRF问题。 因此&#xff0c;普元devops调用jenkins的时候&#xff0c;会出现跨域问题。 后台报错信息如…

Python Socket 编程基础

在计算机网络的世界里&#xff0c;Socket 编程是实现不同计算机之间通信的一种基础而强大的方式。Python 作为一种广泛使用的编程语言&#xff0c;其内置的 socket 库使得进行网络编程变得简单而直观。本文将带你走进 Python Socket 编程的世界&#xff0c;通过构建简单的客户端…

若依分离版本部署流程—开启HTTPS访问。

目录 前言 一、申请证书 二、后端打包 三、前端打包 四、服务器部署 ① Redis启动 ② 运行Jar包 ③ 上传ssl证书到服务器 ④ Nginx配置前端部分 五、访问 前言 在若依分离版本的项目部署过程中&#xff0c;跟大多数前后端分离项目差不多&#xff0c;都是前后端分别打包到服…

大型边缘物联平台实战系列01-为什么我们放弃Springboot选择了Nestjs?

引言 我真的很爱Nestjs&#xff0c;那是一种很纯粹、很理性的爱&#xff0c;四年了&#xff0c;我每天都在用它…哦&#xff0c;不对&#xff0c;是我们都在用它。 四年前&#xff0c;在那场剑拔弩张的技术选型会议上&#xff0c;经过十几轮Battle&#xff0c;楼主力排众议将…

MySQL:ORDER BY 排序查询

通过 ORDER BY 条件查询语句可以查询到符合用户需求的数据&#xff0c;但是查询到的数据一般都是按照数据最初被添加到表中的顺序来显示。 基本语法 在MySQL中&#xff0c;排序查询主要通过ORDER BY子句实现。其基本语法如下&#xff1a; SELECT column1, column2, ... FR…

阿里云上进行开发

目的&#xff1a; 直接在阿里云的ECS上面写代码学代码&#xff0c;而不是在本机上写好以后进行部署。 已有前提&#xff1a; 1&#xff0c;WSL 2&#xff0c; vscode 3&#xff0c;阿里云 47.120.66.77 4&#xff0c;通过WSL的 ssh root47.120.66.77 远程登录阿里云。 …

我的《Java全栈高级架构师高薪就业课》学完有什么收获?

我的《Java全栈高级架构师高薪就业课》上线了~ 这是一套Java全栈微服务架构、以实战项目驱动的课程&#xff01;包含34个模块&#xff0c;1514课时。对标阿里P7级别技术栈而研发&#xff0c;有着循序渐进的学习体系&#xff0c;助你开启Java进阶之旅。 学完我的这套《Java全栈高…