typescript学习(更新中)

目录

  • 开发环境搭建
  • 类型如何声明
  • 有哪些类型
  • 编译配置文件

开发环境搭建

npm i -g typescript

tsc检查是否安装成功

类型如何声明

// 先声明再赋值
let a: number
a = 1

// 直接赋值
let b = 1
function sum(a: number, b: number): number {
    return a + b
}
console.log(sum(1, 2))

有哪些类型

在这里插入图片描述

// 可以使用|连接多个类型
let a: number | string

// unknown类型的变量,不能直接赋值给其他变量
let b: unknown
// a = b // 不可
// 可以下面这样写
a = b as number
a = <number>b

// void用来表示空,以函数为例,就表示没有返回值的函数
function fn(): void {}

// never 表示永远不会返回结果
function fn2(): never {
    throw new Error('报错了!')
}

// object {属性名: 属性值, 属性名:属性值}
// 在属性名后边加上?,表示属性可选的
let c: { name: string, age?: number }
c = { name: 'nihao', age: 18 }
c = { name: 'ni' }
// [propName: string]: any 表示任意类型的属性
let d: { name: string, [propName: string]: any}

// 设置函数结构的类型声明
let e: (a: number, b: number) => number
e = (n, m) => {
    return n + m
}
 
// 数组 类型[] Array<类型>
let f: string[]
let g: Array<string>

// 枚举
enum Gender{
    Male = 0,
    Female = 1
}
let h: { gender: Gender }

// &
let i: { name: string } & { age: number }
i = { name: 'aa', age: 18 }

// 类型别名
type myType = 1 | 2 | 3
let j: myType
let k: myType

编译配置文件

创建一个tsconfig.json

{
    /*tsconfig.json 是ts编译器的配置文件,ts编译器可以根据她的信息来对代码进行编译
    "include": [""],用来指定哪些ts文件需要被编译,一个/*表示任意文件,两个/**表示任意文件目录
    "exclude": 不需要被编译的目录,默认["node_modules","bower_components","jspm_packages"]
    "extends":"目录地址", 继承配置文件,可以把两个配置文件合并
    "files":[xxx.ts,xxx.ts]指定被编译的文件列表
    compilerOptions{} 编译器配置
        target: 用来指定ts 编译后的Es版本,默认ES3,,可选值es3,es5,es6,es2015,es2016,es2017,es2018,es2019,es2020,esnext
        lib[] 用来指定项目中要使用的库,一般不动他
        module: 指定要使用的模块化规范,可选值:none commonjs amd system umd es6 es2015 es2020 exnest
        outDir: 用来指定版以后文件所在的目录
        outFile: 将代码合并成一个文件,设置outFile 后 所有的全局作用域中的代码会合并到同一个文件中。
        allowJs: 是否对js文件进行编译,默认false
        checkJs: 是否检查js文件语法
        removeComments: 编译时是否去除注释
        noEmit: 不生成编译后的文件
        noEmitOnError: 当有错误时不生成编译文件

        // 语法检查的属性
        alwaysStrict: 严格模式,用来设置编译后的文件是否使用严格模式,默认false
        noImplicitAny: 不允许使用隐式any
        noImplicitThis: 不允许使用不明确类型this
        strictNullChecks: 严格的检查空值,
        strict: 所有严格模式的总开关,这个属性一定要写在最上面
    */
    "exclude": [
       	"node_modules"
    ],
    "include": ["./src/**/*"]
    "compilerOptions": {
        "module": "commonjs",
        "target": "ES5",
        "sourceMap": true,
        "outDir": "./dist",
       // "outFile": "./dist/app.js"
       "allowJs": false,
       "checkJs": false,
       "removeComments": false,
       "noEmit": false,
       "noEmitOnError": false,
       "strict": false,
       "alwaysStrict": false,
       "noImplicitAny": false,
       "noImplicitThis": false,
       "strictNullChecks": false
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux 将 api_key设置环境变量里

vi ~/.bashrc在最后添加api_key的环境变量 export GEMINI_API_KEYAIza**********WvpX7FwbdM刷新配置 source ~/.bashrc使用python 读取环境变量 import os gemini_api_key os.getenv(GEMINI_API_KEY) print(gemini_api_key)

Mysql的Cardinality值

什么是Cardinality值&#xff1f; Cardinality值是Mysql做索引优化时一个非常关键的值&#xff0c;优化器会根据这个值来判断是否使用这个索引&#xff0c;它表示索引中唯一值的数目估计值&#xff0c;该值应该尽可能接近1&#xff0c;如果非常小&#xff0c;则用户需要考虑是否…

企业计算机服务器中了mkp勒索病毒如何解密,mkp勒索病毒解密流程

网络技术的应用与发展&#xff0c;为企业的生产运营提高了效率&#xff0c;越来越多的企业利用网络开展多项工作业务&#xff0c;利用网络的优势&#xff0c;可以为企业更好的服务&#xff0c;但是稍不注意就会被网络威胁所盯上。近日&#xff0c;云天数据恢复中心接到多家企业…

二本双非|逆袭985/211只要做好这3件事

我的本科学校就是双非&#xff0c;但是我并不觉得考研是一件非常容易地事情&#xff0c;并且我身边的同学也没有一个觉得考研很轻松。可能网上很多经验贴说自己双非上岸985&#xff0c;二本上岸985&#xff0c;我觉得这是大家陷入了互联网时代的信息茧房。 考研不管是对985/211…

波奇学Linux: 信号捕捉

sigaction:修改信号对应的handler方法 act输入型参数&#xff0c;oldact输出型参数 void (*sa_handler) (int) //修改的自定义函数 sigset_t sa_mask // void handler(int signo) {cout<<"catch a signal, signal number: "<<signo<<endl; } int …

超市小程序有哪些功能 怎么制作

超市小程序是非常有用的工具&#xff0c;可以帮助超市提升用户体验&#xff0c;提高销售额。下面我们来看一下超市小程序可以具备哪些功能&#xff0c;以及如何制作一个高效的超市小程序。 1. **商品展示与搜索功能**&#xff1a;用户可以浏览超市的商品信息&#xff0c;包括价…

数字化转型导师坚鹏:大模型的应用实践(金融)

大模型的应用实践 ——开启人类AI新纪元 打造数字化转型新利器 课程背景&#xff1a; 很多企业和员工存在以下问题&#xff1a; 不清楚大模型对我们有什么影响&#xff1f; 不知道大模型的发展现状及作用&#xff1f; 不知道大模型的针对性应用案例&#xff1f; 课程…

雍禾医疗耀眼的“小”医生,雍禾植发刘树伟10年热爱一份事业

“你说你一个普外科大大夫&#xff0c;怎么改去做小小毛发医生了呢&#xff1f;”这是雍禾植发刘树伟医生&#xff0c;从公立医院转行做毛发医生时&#xff0c;被人质疑最多的点。然而&#xff0c;选择成为一名毛发医生&#xff0c;却是他花3年时间做出的重要的决定。 2009年&…

【C++ STL详解】——string类

目录 前言 一、string类对象的常见构造 二、string类对象的访问及遍历 1.下标【】&#xff08;底层operator【】函数&#xff09; ​编辑 2.迭代器 3.范围for 4.at 5.back和front 三、string类对象的容量操作 1.size 和 length 2.capacity 3.empty 4.clear 5.res…

【校园安全】支小蜜防校园霸凌语音识别系统的好处

在校园安全领域&#xff0c;防校园霸凌语音识别系统的出现&#xff0c;为预防和应对校园霸凌行为提供了新的技术手段。本文将探讨防校园霸凌语音识别系统的好处&#xff0c;并分析其在校园安全建设中的重要作用。 通过安装在校园各个角落的语音识别设备&#xff0c;系统能够捕…

Flink并行度

1、Task flink中每个算子就是一个Task&#xff0c;比如flatMap、map、sum是一个Task。 2、SubTask 算子有几个并行度SubTask的数量就是几&#xff0c;比如 3、算子并行度 算子并行度指的是每个算子的并行度&#xff0c;可用env.setParallelism(1);设置所有算子的并行度&am…

浏览器是如何渲染页面的?

浏览器是如何渲染页面的&#xff1f; 1. 解析 HTML2. 样式计算 Computed Style3. 布局 Layout4. 分层 Layer5. 绘制 Paint6. 分块 Tiling7. 光栅化 Raster8. 画 draw完整过程面试题什么是 reflow&#xff08;回流/重排&#xff09;?什么是 repaint &#xff08;重绘&#xff0…

智慧城市中的数字孪生:构建城市管理的未来框架

目录 一、引言 二、数字孪生技术概述 三、数字孪生技术在智慧城市中的应用 1、实时监测与预警 2、模拟与优化 3、智能化决策 4、协同与共享 四、数字孪生技术构建城市管理的未来框架的价值 1、提高管理效率 2、优化资源配置 3、提升公共服务水平 4、增强应对突发事…

【Linux】Linux——Centos7安装

目录 虚拟机安装【空壳子】安装VMware Workstation新建虚拟机硬件兼容性(直接下一步)稍后安装操作系统客户及操作系统选择Linux&#xff0c;版本Centos764位给虚拟机命名&#xff0c;并选择安装位置处理器配置&#xff08;默认即可&#xff0c;不够用后面可以调&#xff09;虚拟…

JavaWeb - 3 - JavaScript(JS)

JavaScript(JS)官方参考文档&#xff1a;JavaScript 教程 JavaScript&#xff08;简称&#xff1a;JS&#xff09;是一门跨平台、面向对象的脚本语言&#xff0c;是用来控制网页行为的&#xff0c;它能使网页可交互&#xff08;脚本语言就不需要编译&#xff0c;直接通过浏览器…

谷歌广告(google Ads)投放技巧

Google广告投放涉及多个方面&#xff0c;以下是一些常用的技巧&#xff0c;可以帮助提高广告效果&#xff1a; 关键词选择&#xff1a; 选择与你的产品或服务紧密相关的关键词&#xff0c;并确保这些关键词与用户的搜索意图匹配。使用Google关键词规划工具来找到潜在的关键词&a…

python词嵌入

一、词嵌入的概念 自然语言处理的突破在2023年震撼世界&#xff0c;chatgpt3出来&#xff0c;之后chatgpt4、Gemini、Claude3等出来&#xff0c;问答越来越智能&#xff0c;非常厉害&#xff0c;其中有个基础性的概念&#xff0c;计算机要如何理解语言&#xff0c;基础工作就在…

IOS苹果通话记录在线生成网站源代码,直接上传就可使用

一键生成&#xff0c;PHP的上传到网站根目录打开域名访问即可 源码免费下载地址专业知识分享社区-专业知识笔记免费分享 (chaobiji.cn)

个人开发者如何制作实用的微信预约小程序?

随着移动互联网的普及&#xff0c;微信小程序已经成为一种非常流行的应用方式。在本文中&#xff0c;我们将介绍如何通过乔拓云平台制作一个微信预约小程序&#xff0c;从入门到精通&#xff0c;让你轻松完成这个过程。 一、注册登录乔拓云平台 首先&#xff0c;你需要在乔拓云…

为什么说鸿蒙开发就业面广?人才遭“爆抢”的背后说明什么?

鸿蒙开发&#xff0c;作为华为推出的全新操作系统&#xff0c;自其诞生以来就备受关注。而鸿蒙开发就业面广&#xff0c;人才遭“爆抢”的现象&#xff0c;更是引发了业界的广泛讨论。那么&#xff0c;这一现象背后究竟隐藏着怎样的原因和深意呢&#xff1f; 首先&#xff0c;鸿…