typeScript--[数据定义]

2023-10-30

一.安装ts

1.命令行运行如下命令,全局安装 TypeScript:

npm install -g typescript

2.安装完成后,在控制台运行如下命令,检查安装是否成功

tsc -V 

二.创建ts文件

1.创建一个day01.ts文件,随便在里面码一点代码:

console.log("hello ts")

2.在命令行上,运行 TypeScript 编译器(手动编译为js文件):

tsc day01.ts

输出结果为一个 day01.js 文件,它包含了和输入文件中相同的 JavsScript 代码。

3.在命令行上,通过 Node.js 运行这段代码:

node day01.js

控制台会打印出来

hello ts

4.vscode自动编译ts文件

1.  生成配置文件tsconfig.json
    tsc --init
2.  修改tsconfig.json配置
    "outDir": "./js", //输出文件到当前文件下的js文件夹
    "strict": false,    
3.  启动监视任务: 
    终端 -> 运行任务 -> 监视tsconfig.json

三.基本类型的定义规范

1.基础语法:

首先在 TS 中,创建变量时,var、let、const 还是和 JS 中的使用方式一样,但是,在声明变量时需要约束变量的数据类型:

var 变量名: 类型 = 值;

2.基本定义示例:

var a:number = 1
var b:string = "hello"
var c:boolean = true
var d:undefined = undefined
var e:null = null

3.void

void 在 TS 中用来表示没有任何数据类型。通常,当一个函数没有返回值的时候,我们会将返回值的类型设置为 void,如果return了一个返回值会报错。

例如定义一个函数没有返回值:

function f(): void {
    console.log(123)
}

4.any

any 在 TS 中用来表示任意数据类型。通常,只有当值来自于一些动态的内容,我们在一开始确定不了值的类型,可以选择使用 any。其他情况下都不推荐使用 any:

var g: any = "hello"
g = 123
g = null

5.array

TS 中要求数组中的每一项必须是同一个数据类型。

var h: number[] = [1, 2, 3]
var i: Array<number> = [1,2,3] //定义的数组里只能存在number类型的数据
     //Array<string> = ["1","2","3"] //只能存在string类型的数据
var j: Array<any> = ["1", 2, true]   //如果存在不同类型推荐使用 any

6.元组

元组中,允许一个数组中保存多个类型的数据。

但是,要求数组中的值与元组类型必须:数量要对应、位置要对应、类型要对应。

var k: [number, string] = [1, "hello"]

7.object

 TS 中定义对象时,需要定义出对象中有哪些属性,每一个属性的值是什么类型。

var l: { id: number, name: string } = {
    id: 1,
    name: "逍遥的码农"
}

8.enum枚举

enum num {
    one,
    two,
    three
}
var m:num = num.one
console.log(m) //0

这里会输出0,因为枚举不赋值会取下标

赋值情况下看一下

enum num {
    one,
    two = 5,
    three
}
var m:num = num.three
console.log(m) //6

这里会输出6,这里会递增

(1)普通枚举(编译js会生成对应的代码)

//ts代码
enum num {
    one,
    two = 5,
    three
}
var m:num = num.three
console.log(m)

//js代码
// var num;
// (function (num) {
//     num[num["one"] = 0] = "one";
//     num[num["two"] = 5] = "two";
//     num[num["three"] = 6] = "three";
// })(num || (num = {}));
// var m = num.three;
// console.log(m);

(2)常量枚举(编译后不会产生多余的代码)

//ts代码
const enum num {
    one,
    two = 5,
    three
}
var m:num = num.three
console.log(m)

//js代码
// var m = 6 /* num.three */;

可以看到就编译了一行

9.never

never类型表示永远不会有值的一种类型。

// 返回never的函数必须存在无法达到的终点
// 因为总是抛出异常,所以 error 将不会有返回值
function error(message: string): never {
    throw new Error(message);
}
// 因为存在死循环,所以 infiniteLoop 将不会有返回值
function infiniteLoop(): never {
    while (true) {
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

typeScript--[数据定义] 的相关文章

随机推荐

  • 第一章:基本概念

    什么是数据结构 其实官方没有统一定义 数据结构是数据对象 以及存在于该对象的实例和组成实例的数据元素之间的各种联系 这种联系可以通过定义相关的函数给出 Sartaj Sahni 数据结构 算法与应用 数据结构是ADT 抽象数据类型 Abst
  • 在服务器上搭建git仓库

    在本地项目中导出裸仓库 git clone bare project name git 上传到服务器上pscp r project name git user name ip or hostname git path 在本地仓库中设置服务端
  • 蓝桥杯 算法训练 印章

    蓝桥杯 算法训练 印章 共有n种图案的印章 每种图案的出现概率相同 小A买了m张印章 求小A集齐n种印章的概率 输入输出 一行两个正整数n和m 一个实数P表示答案 保留4位小数 样例 2 3 0 7500 这是个dp问题 存在两个变量 印章
  • springboot基础篇—SpringBoot 配置

    1 配置文件 SpringBoot 使用一个全局配置文件 application yml application properties 配置文件放在 src main resources 目录或者 类路径 config 下 yml 是 YA
  • 【Spring Boot丨(11 )】json的集成

    集成JSON 概述 Jackson Gson JSON B 主页传送门 传送 概述 Spring boot 提供了三种json库的集成 Gson Jackson JSON B 上述三种库提供了将Java对象转换为JSON字符串以及将JSON
  • c语言全局变量fork,使用fork进行C语言编程()

    好吧我做错了什么 我在Ubuntu上这样做 我想让系统命令 ls 和一个参数如 a 然后让孩子执行它 然后父母只是打印出来 我不明白为什么我一直让 父母 返回两次 有任何想法吗 使用fork进行C语言编程 include include i
  • 内存四区(代码区 静态区 栈区 堆区)

    参考 内存四区 代码区 静态区 栈区 堆区 作者 今天天气眞好 发布时间 2021 04 01 18 09 13 网址 https blog csdn net qq 51118175 article details 115379779 sp
  • C#文件重命名工具

    文章目录 工具背景 4个文件介绍 RenamesSpecificPrefixFile exe config DataSave txt 工具介绍 重命名的存储方式 文件夹介绍 源文件夹 结果 使用 PDF 视频 重名时坚持拷贝 可能的报错 工
  • json数据一次读取多条数据(数组形式,数组前面没有字符和有字符)的操作方法

    适用于读取的数据如图所示的数组格式 public static List
  • 田忌赛马

    题目描述 我国历史上有个著名的故事 那是在2300年以前 齐国的大将军田忌喜欢赛马 他经常和齐王赛马 他和齐王都有三匹马 常规马 上级马 超级马 一共赛三局 每局的胜者可以从负者这里取得200银币 每匹马只能用一次 齐王的马好 同等级的马
  • Linux(CentOS6.5_X86.64)编译libjpeg出现“checking host system type... Invalid configuration `x86_64-unknow...

    本文地址http comexchan cnblogs com 作者Comex Chan 尊重知识产权 转载请注明出处 谢谢 今天在编译libjpeg 的时候 遇到下面的报错 checking host system type Invalid
  • 实现以太坊的数据结构----状态树

    状态树 实现账户地址 addr 到账户状态 state 的映射 在以太坊中账户地址用160位 bits 表示 即40个16进制的数 1 为什么不能使用哈希表实现 用哈希表实现 就是系统中的全节点维护一个哈希表 在不考虑哈希碰撞的情况下 每次
  • Flask - 实现数据分页

    目录 一 Flask SQLAlchemy 直接获取分页后的数据 1 0 基于 flsk sqlalchemy 的批量数据插入 add all list 1 1 Pagination对象的常用属性 1 2 Pagination对象的常用方法
  • nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全

    文章目录 前言 一 nginx简介 1 什么是 nginx 和可以做什么事情 2 Nginx 作为 web 服务器 3 正向代理 4 反向代理 5 负载均衡 6 动静分离 二 Nginx 的安装 Linux centos为例 1 准备工作
  • 吃透Spring源码(九):Spring实例化(createBeanInstance)源码解析

    一 createBeanInstance 方法概述 createBeanInstance 是Spring实例化的核心代码 它根据不同的情况会调用四种实例化方法 obtainFromSupplier 通过Supplier实例化 instant
  • 2021年最新IT职业技能全套图谱

    2021年最新IT职业技能图谱出炉 如图 包含各个方向 各个专业 按照以上技能图谱学习 保证你拿高薪
  • 解决ROS系统 rosdep update超时问题的新方法

    由于近期国内Github Raw的可用IP越来越少 通过修改hosts文件解决rosdep update超时问题的方法已经不太好用 本文通过修改rosdep源码中下载资源的函数来解决这一问题 网站https ghproxy com 支持gi
  • c++时间戳获取和转换

    1 使用api 可以使用windows下和linux下api函数来获取 比较简单 如下所示 int64 t getTimeStamp 毫秒数 int mSecond 0 if defined WIN32 SYSTEMTIME sys Get
  • video-player实现hls播放全过程

    安装依赖 npm install vue video player save 引入样式 第一个是videoJs的样式 后一个是vue video player的样式 因为考虑到我其他业务组件可能也会用到视频播放 所以就放在了main js内
  • typeScript--[数据定义]

    一 安装ts 1 命令行运行如下命令 全局安装 TypeScript npm install g typescript 2 安装完成后 在控制台运行如下命令 检查安装是否成功 tsc V 二 创建ts文件 1 创建一个day01 ts文件