当前位置: 首页 > news >正文

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

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;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 中常见的类型定义方法。你可以根据自己的需求选择合适的类型定义方式。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【全志H616开发】SQLite打开/创建数据库的C接口
  • 一款功能强大的免费开源卸载工具
  • 基于N32L406MB EasyFlash参数(key-value)记录库移植
  • 设计模式-策略模式的完整代码示例及测试验证
  • 【Python】期权--隐含波动率计算
  • 手把手构建Netty
  • 【前端 · 面试 】TCP 总结(一)—— 概述
  • SpringCloud Alibaba 微服务(四):Sentinel
  • Web前端:HTML篇(一)
  • ubuntu修改anaconda权限
  • 配置文件application.properties
  • input().strip()什么意思
  • jdk1.8中HashMap为什么不直接用红黑树
  • 基于opencv的答题卡识别
  • AI的学习明确路径
  • Centos6.8 使用rpm安装mysql5.7
  • CSS实用技巧
  • extjs4学习之配置
  • Java 最常见的 200+ 面试题:面试必备
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • PAT A1050
  • Selenium实战教程系列(二)---元素定位
  • 从tcpdump抓包看TCP/IP协议
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 记一次用 NodeJs 实现模拟登录的思路
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 力扣(LeetCode)357
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​【已解决】npm install​卡主不动的情况
  • ​如何防止网络攻击?
  • # Kafka_深入探秘者(2):kafka 生产者
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • (2)(2.10) LTM telemetry
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (回溯) LeetCode 46. 全排列
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (三)Honghu Cloud云架构一定时调度平台
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)可以带来幸福的一本书
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .Net插件开发开源框架
  • @DataRedisTest测试redis从未如此丝滑
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @我的前任是个极品 微博分析
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [2016.7 test.5] T1
  • [BZOJ4016][FJOI2014]最短路径树问题
  • [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项
  • [GN] Vue3快速上手1