TS核心知识点

news2024/10/8 15:13:43

TS核心知识点

一篇面向初学者的TypeScript知识点总结,并指导如何使用npm安装、编译和实时编译TypeScript。

TypeScript知识点总结(面向初学者):

  1. TypeScript简介

    • TypeScript是JavaScript的超集,添加了可选的静态类型和面向对象编程的特性
    • 由Microsoft开发和维护,编译成纯JavaScript
  2. 基本类型

    • 布尔值:boolean
    • 数字:number
    • 字符串:string
    • 数组:type[]或Array
    • 元组:[type1, type2, …]
    • 枚举:enum
    • any:任意类型
    • void:通常用于函数返回值
    • null和undefined
    • never:永不存在的值的类型

    案例代码:

    // 布尔值:boolean
    let isDone: boolean = false;
    console.log(isDone); // 输出: false
    
    // 数字:number
    let decimal: number = 6;
    let hex: number = 0xf00d;
    let binary: number = 0b1010;
    let octal: number = 0o744;
    console.log(decimal, hex, binary, octal); // 输出: 6 61453 10 484
    
    // 字符串:string
    let color: string = "blue";
    let fullName: string = `Bob Bobbington`;
    let sentence: string = `Hello, my name is ${fullName}.`;
    console.log(sentence); // 输出: Hello, my name is Bob Bobbington.
    
    // 数组:type[] 或 Array<type>
    let list1: number[] = [1, 2, 3];
    let list2: Array<number> = [1, 2, 3];
    console.log(list1, list2); // 输出: [1, 2, 3] [1, 2, 3]
    
    // 元组:[type1, type2, ...]
    let x: [string, number];
    x = ["hello", 10];
    console.log(x[0].substr(1)); // 输出: ello
    console.log(x[1].toString()); // 输出: 10
    
    // 枚举:enum
    enum Color {Red, Green, Blue}
    let c: Color = Color.Green;
    console.log(c); // 输出: 1 (因为Green的索引是1)
    
    // any:任意类型
    let notSure: any = 4;
    notSure = "maybe a string instead";
    notSure = false;
    console.log(notSure); // 输出: false
    
    // void:通常用于函数返回值
    function warnUser(): void {
        console.log("This is my warning message");
    }
    warnUser(); // 输出: This is my warning message
    
    // null 和 undefined
    let u: undefined = undefined;
    let n: null = null;
    console.log(u, n); // 输出: undefined null
    
    // never:永不存在的值的类型
    function error(message: string): never {
        throw new Error(message);
    }
    
    // 尝试调用 error 函数
    try {
        error("这是一个错误");
    } catch (e) {
        console.log(e.message); // 输出: 这是一个错误
    }
    
  3. 变量声明

    • 使用let和const声明变量
    • 类型注解:let variableName: type = value;
  4. 函数

    • 函数参数和返回值可以指定类型
    • 可选参数和默认参数
    • 函数重载
  5. 接口

    • 定义对象的结构
    • 可选属性和只读属性
    • 函数类型接口
    • 可索引类型
    • 面向对象编程
    • 继承
    • 公共、私有和受保护的修饰符
    • 抽象类
  6. 泛型

    • 可以处理多种类型的函数和类
    • 泛型约束
  7. 模块

    • 导入和导出模块
    • 命名空间

使用npm安装、编译和实时编译TypeScript的步骤:

  1. 安装Node.js和npm(如果尚未安装)
    访问 https://nodejs.org 下载并安装Node.js,它会自动安装npm

  2. 安装TypeScript
    打开命令行,运行:

    npm install -g typescript
    
  3. 初始化项目
    创建一个新文件夹,进入该文件夹,然后运行:

    npm init -y
    
  4. 在项目中安装TypeScript

    npm install --save-dev typescript
    
  5. 创建TypeScript配置文件

    npx tsc --init
    
  6. 编写TypeScript代码
    创建一个.ts文件,例如app.ts

  7. 编译TypeScript

    npx tsc 
    

. 实时编译TS
如何使用 tsc --watch 并配置相应的文件来实时编译 TypeScript。以下是详细的步骤:

  1. 初始化 TypeScript 配置文件

首先,在你的项目根目录下运行以下命令来创建 tsconfig.json 文件:

npx tsc --init
  1. 配置 tsconfig.json

创建后,打开 tsconfig.json 文件。这里有一些常用的配置选项:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "**/*.spec.ts"
  ]
}

这个配置的主要内容:

  • target: 编译的目标 JavaScript 版本
  • module: 使用的模块系统
  • outDir: 编译后的 JavaScript 文件输出目录
  • rootDir: TypeScript 源文件的根目录
  • include: 需要编译的文件
  • exclude: 不需要编译的文件
  1. 创建源文件目录

根据上面的配置,创建一个 src 目录来存放你的 TypeScript 源文件:

mkdir src
  1. 创建 TypeScript 文件

src 目录中创建一个 TypeScript 文件,例如 app.ts

// src/app.ts
console.log("Hello, TypeScript!");
  1. 运行 watch 模式

现在,你可以在项目根目录下运行以下命令来启动 watch 模式:

npx tsc --watch

这将启动 TypeScript 编译器的监视模式。每当你修改 src 目录下的 .ts 文件时,它都会自动重新编译。

  1. 查看结果

你会发现在项目根目录下创建了一个 dist 文件夹,里面包含编译后的 JavaScript 文件。

  1. 运行编译后的 JavaScript

你可以使用 Node.js 来运行编译后的 JavaScript 文件:

node dist/app.js

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

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

相关文章

【智能算法应用】人工水母搜索算法求解二维路径规划问题

摘要 本文应用人工水母搜索算法&#xff08;Jellyfish Search, JFS&#xff09;求解二维空间中的路径规划问题。水母搜索算法是一种新型的智能优化算法&#xff0c;灵感来源于水母的群体运动行为&#xff0c;通过模仿水母的觅食、漂浮等行为&#xff0c;实现全局最优路径的搜索…

51单片机基本知识

51单片机的基本知识 一、单片机介绍 单片机是单片微型计算机的简称&#xff0c;把各种功能部件包括中央处理器&#xff08;CPU&#xff09;、只读存储器&#xff08;ROM&#xff09;、随机读写存储器&#xff08;RAM&#xff09;、输入输出&#xff08;I/O&#xff09;单元、…

算法闭关修炼百题计划(四)

仅供个人复习 1.两数相加2.寻找峰值3.寻找旋转排序数组中的最小值4.寻找旋转排序数组中的最小值II5.搜索旋转排序数组6.岛屿的最大面积7.最大数8.会议室9.最长连续序列 1.两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储…

【微服务】网关 - Gateway(上)(day7)

概述 引入 在前几个系列中&#xff0c;使用Eureka、Consul、Nacos解决了服务注册、服务发现的问题&#xff1b;使用SpringCloudLoadBalancer解决了负载均衡的问题&#xff1b;使用OpenFeign解决了远程调用的问题。 但是现在所有的微服务接口都是直接对外暴露的&#xff0c;可…

【优选算法】(第二十八篇)

目录 K个⼀组翻转链表&#xff08;hard&#xff09; 题目解析 讲解算法原理 编写代码 两数之和&#xff08;easy&#xff09; 题目解析 讲解算法原理 编写代码 K个⼀组翻转链表&#xff08;hard&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;Leet…

win11 24H2怎么安装_u盘安装win11 24H2详细步骤【支持新旧机型安装】

10月1日&#xff0c;微软正式发布了Windows 11 24H2正式版。对于win11 24h2新机器安装肯定是可以的&#xff0c;对于旧电脑在硬件配置上可能无法满足Windows 11 24h2的最低系统要求&#xff0c;如果按官方要求是无法安装win11的。但是如果采用第三方pe方式安装的话&#xff0c;…

Android Studio实现安卓图书管理系统

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 171安卓小说 1.开发环境 android stuido3.6 jak1.8 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.图书列表 3.图书借阅 4.借阅列表 3.系统截图

VSCode使用Code Runner插件运行时,路径错误问题

1. 问题介绍 由于Code Runner插件的工作目录与文件执行目录不同&#xff0c;而导致路径错误&#xff01; 示例演示&#xff1a; 创建根目录test-dir&#xff0c;然后在里面分别创建两个目录code和data&#xff0c;分别存放Python程序read_file.py和输入数据input.txt read_fi…

PCIe配置篇(2)——如何进行配置操作(二)

一、配置机制 我们之前提到过&#xff0c;配置空间存在于PCIe设备上&#xff0c;而处理器通常无法直接执行配置读写请求&#xff0c;因为它只能生成内存和I/O请求。这意味着RC&#xff08;Root Complex&#xff09;需要将某些访问请求转换为配置请求&#xff0c;以支持配置空间…

人像抠图换背景怎么做?5款出色抠图工具让照片更加聚焦精彩

拍了一张很赞的照片&#xff0c;结果背景一团糟&#xff0c;完全抢了人像的风头&#xff1f;又或者在社交媒体上看到别人分享的图片&#xff0c;人像突出、背景清晰&#xff0c;而自己的总是差那么点意思&#xff1f; 别担心&#xff0c;现在有了人像抠图app&#xff0c;这些烦…

YOLOv10改进策略【注意力机制篇】| EMA 即插即用模块,提高远距离建模依赖(含二次创新)

一、本文介绍 本文记录的是基于EMA模块的YOLOv10目标检测改进方法研究。EMA认为跨维度交互有助于通道或空间注意力预测&#xff0c;并且解决了现有注意力机制在提取深度视觉表示时可能带来的维度缩减问题。在改进YOLOv10的过程中能够为高级特征图产生更好的像素级注意力&#…

浅谈 WMS 的应用行业_SunWMS智慧仓储物流系统

【大家好&#xff0c;我是唐Sun&#xff0c;唐Sun的唐&#xff0c;唐Sun的Sun。一站式数智工厂解决方案服务商】 仓库管理系统&#xff08;WMS&#xff09;已经成为众多行业优化运营、提高效率和竞争力的重要工具。WMS 的应用范围广泛&#xff0c;涵盖了制造业、零售业、电商、…

数据结构--堆的深度解析

目录 引言 一、基本概念 1.1堆的概念 1.2堆的存储结构 1.3堆的特点 二、 堆的基本操作 2.1初始化 2.2创建堆 2.3插入元素 2.4删除元素 2.5堆化操作 2.6堆的判空 2.7获取堆顶元素 三、堆的常见应用 1. 优先队列 2. 堆排序 3. Top-k 问题 4. 图论中的应用 四…

超享云服务器是什么意思?是免费的吗

超享云服务器是什么意思&#xff1f;超享云服务器是一种基于云计算技术&#xff0c;提供高性能、高可靠性和可扩展性的虚拟化服务器服务。它是通过虚拟化技术在物理服务器上运行&#xff0c;能够根据用户需求进行灵活的扩展和配置。虽然一些云服务提供商可能会提供免费试用期或…

Chromium 如何查找前端Browser 等对象定义在c++中的实现呢

以前端Navigator 对象为例&#xff1a; 1、直接在vscode里面搜索"Navigator" 过滤条件*.idl&#xff0c;这样可以搜到Navigator.idl对象文件。 2、打开Navigator.idl 可以看到平级目录对应的Navigator.h 和Navigator.cc定义 3、Navigator.idl会在out\Debug\gen\thir…

【bug】finalshell向远程主机拖动windows快捷方式导致卡死

finalshell向远程主机拖动windows快捷方式导致卡死 问题描述 如题&#xff0c;作死把桌面的快捷方式拖到了finalshell连接的服务器面板中&#xff0c;导致finalshell没有响应&#xff08;小概率事件&#xff0c;有时会触发&#xff09; 解决 打开任务管理器查看finalshell进…

基于SpringBoot博物馆游客预约系统【附源码】

基于SpringBoot博物馆游客预约系统 效果如下&#xff1a; 主页面 注册界面 展品信息界面 论坛交流界面 后台登陆界面 后台主界面 参观预约界面 留言板界面 研究背景 随着现代社会的快速发展和人们生活水平的提高&#xff0c;文化生活需求也在日益增加。博物馆作为传承文化、…

2024年10款好用的图纸加密软件推荐!企业CAD图纸加密推荐

随着企业信息安全意识的不断提高&#xff0c;尤其是在工业设计和制造领域&#xff0c;保护CAD图纸等核心技术资料的安全成为企业管理的重点。图纸一旦泄露&#xff0c;可能会给企业带来巨大的经济损失。因此&#xff0c;选择一款好用的图纸加密软件&#xff0c;对企业而言尤为重…

FDS-112 土壤盐分传感器 三针 自带温度补偿功能

产品概述 土壤盐分传感器是用不锈钢探针通过变送器转换成土壤盐分的模拟或数字信号&#xff0c;再经过精密温度传感器将信号补偿到 25℃&#xff0c;作为土壤盐分信号输出&#xff0c;将电导值转换成与之对应的模拟或数字信号。将这种电导率传感器埋入土壤后&#xff0c;直接测…

什么是 SAP ABAP 系统的工作进程(Work Process)

ABAP 系统架构图里,Work Process 工作进程的地位如下图所示。 ABAP 工作进程的概念和作用,同《计算机操作系统》中的同名概念有所差异。 操作系统的进程,是对正在运行中的程序的一个抽象。线程则是操作系统分配处理器时间资源的基本单元,是进程之内独立执行的一个单元。对…