首页 > 其他分享 >1.变量的声明-原始类型

1.变量的声明-原始类型

时间:2023-12-12 19:55:52浏览次数:24  
标签:变量 never number 原始 类型 let 声明 any string

变量的声明-基础类型

/*
  前言:如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测
  这里ts自动将variable推断为boolean类型----类型推断机制
*/
let variable = false;
variable = true;

1.number数字类型

/* 
  注意:
    TypeScript里的所有数字都是浮点数,没有整数小数区分
    支持十进制和十六进制,在ECMAScript 2015之后,也支持二进制和八进制字面量
*/
let a: number = 10;
let a1: number = 10.111;
// 十六进制
let hexLiteral: number = 0xf00d;
// 二进制
let binaryLiteral: number = 0b1010;
// 八进制
let octalLiteral: number = 0o744;

2.string字符串类型

let b: string = '10';
// 注意:也可以使用模板字符串
let b1: string = `hello${b}`;

3.boolean布尔类型

let falg: boolean = true;

4.any类型和unknown类型

4.1 any 表示任意类型,不建议使用

// 声明变量如果不指定类型,Ts解析器会自动判断变量的类型是any(隐式)
let anyVar: any;
anyVar = 1;
anyVar = '1';
anyVar = true;

4.2 unknow 表示未知类型的值

let unknownVar: unknown;
unknownVar = 1;
unknownVar = '1';
unknownVar = true;
注意:某个变量的类型是any,他可以赋值给任何类型的变量,但是unknown不行,但是unknown可以赋值给any
let var1: any;
let numberVar:number = 1;
numberVar:number = var1;
let var2: unknown;
var1 = var2;

5. void | undefined | null | never

5.1 void 常见用于函数没有返回值的情况

// 在函数中使用
function warnUser(): void {}
// 当声明一个void类型的变量,则这个变量只能给它赋值为undefined 和 null(不常用)
let voidVar1: void = undefined;
// 将null赋值给void类型的变量在严格模式下会报错
// let voidVar2: void = null;

5.2 undefined 和 null

// undefined和null两者各自有自己的类型分别叫做undefined和null
let undVar: undefined = undefined;
let nullVar: null = null;

5.3 never 表示那些永不存在的值的类型,连undefined都不返回

// 常用于报错, 任何类型的变量都不能赋值给never类型的变量,除非是never自己
function fn22(): never {
  throw new Error('报错');
}
// 推断的返回值类型为never
function fail() {
    return error("报错");
}
// 此时myType1的类型就是never,因为不可能有个变量既是string也是number
type myType1 = string & number; // 交叉类型
// never在联合类型中会被忽略,此时的myType2的类型就是 void 或者 number
type myType2 = void | number | never;
// never常用于兜底逻辑,如下
type myType3 = '唱' | '跳' | 'rap';
function switchFun(value: myType3) {
  switch (value) {
    case '唱':
      break;
    case '跳':
      break;
    case 'rap':
      break;
    default:
      const error: never = value;
      break;
  }
}
// 如果后期需要再给myType3增加一个新的类型,可以让开发人员很快知道这个函数也需要增加对应的逻辑

6.数组

定义数组有两种方式

方式一:可以在元素类型后面接上 []
let arr1: number[] = [1, 2, 3, 4];
方式二:使用数组泛型,Array<元素类型>
let arr2: Array<number> = [1, 2, 3, 4];
扩展一: 定义数组对象,使用interface
interface obj {
  name: string;
  age?: number;
  [propName: string]: any;
}
let arrobj1: obj[] = [
  {
    name: '张三',
  },
];
let arrobj2: Array<obj> = [
  {
    name: '张三',
    age: 19,
  },
];
扩展二:多维数组
let arr3: number[][] = [[1], [2]];
let arr4: Array<Array<number>> = [[1], [2]];
扩展三:任意类型数组
// 使用any
let arr5: any[] = [{}, '1', 1];
// 使用元组
let arr6: [{}, string, number] = [{}, '1', 1];

7.元组 tuple

// 表示一个已知元素数量和类型的数组
// 例如,想定义一个值得类型为string和number的元组
let tuple1: [string, number] = ['1', 2];
let tuple2: [x: string, y?: number] = ['1'];

标签:变量,never,number,原始,类型,let,声明,any,string
From: https://www.cnblogs.com/youbiaokachi/p/17897684.html

相关文章

  • 学C笔记归纳 第十二篇——函数2 声明和定义
    函数功能越单一,可移植性越强——“高内聚低耦合”;函数可以嵌套调用,不可以嵌套定义;关于函数声明:    告诉编译器函数名、参数、返回类型,但函数具体存在由函数定义决定;    函数声明一般出现在函数使用之前,要满足先声明后使用;    函数声明一般放在头文件......
  • 关于影子变量 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/livepatch/shadow-vars.html关于影子变量影子变量是一种简单的方法,用于让livepatch模块将额外的“影子”数据与现有数据结构关联起来。影子数据是单独分配的,而父数据结构保持不变。本文档描述的影子变量API用于为它们的父对象分配/......
  • mysql安装及环境变量配置
    1.把下载的压缩包放到安装目录下后解压2.环境变量中path里添加mysql安装文件下bin目录的路径3.在mysql中bin的同级目录下新建my.ini配置文件4.编辑my.ini[mysqld]basedir=C:\mysql\mysql-5.7.19-winx64\datadir=C:\mysql\mysql-5.7.19-winx64\data\port=3306skip-grant-tables5.管......
  • typescript 参数声明,参数之前相互依赖,实例化时能明确传入参数,a参数的取值,依赖b参数的
    //声明类型exportinterfaceIform{Input:{text:string;},Select:{options:any[];},Radio:{checkd:boolean;},Switch:{checked:boolean;},}//声明函数定义函数参数key,form,form取值,校验依赖于keyexportfunctiongetF......
  • (C语言)关于printf的新发现: 可以用字符串变量替代第一个字符串参数
    chara[]="hello%d\n%dworld";printf(a,2,3);//输出://hello2//2world事情的起因是使用printf("\033[0;47;30m");改变命令行字体背景和颜色的时候,室友提起能否让用户改变字体颜色。因为那需要改变printf("");里双引号中的内容,我就下意识觉得不行,但又转念一想,想到了这种......
  • vue2环境变量配置开发环境和生产环境
    在项目根目录下新建.env文件写入变量比如本地链接VUE_APP_BASE_API=http://127.0.0.1:5000/在读取的时候使用process.env.VUE_APP_BASE_API就可以读到这个全局变量process.env.NODE_ENV有两个值开发环境:development,部署环境:production都为Srting字符串下面示例给baseurl添......
  • ChatGPT叫你如何在centos中配置javapath变量
    当使用vim编辑器时,你可以按照以下步骤来编辑bash配置文件:打开~/.bashrc文件:bashvim~/.bashrc或者,如果你选择在系统级别配置,可以使用:bashsudovim/etc/environment在vim中编辑文件:移动光标到文件末尾,按下i进入插入模式,然后添加以下行:bashexportJ......
  • 1.1 从问题背景中理解变量与关系
    在学习数学建模的过程中,最核心的问题就是从题目当中抽象出变量与关系。这是非常重要的一点。但在我指导数学建模竞赛的过程中,这一点往往也成为了学生们的痛点、难点。尤其是在美国COMAP公司举办的一些比赛(HIMCM,IMMC,MCM/ICM)当中问题变得更加隐晦,学生往往难以从题目当中发现问题......
  • 常量与变量:JavaScript中的稳定与灵活
    在编程的世界里,数据的存储与操作是构建任何功能的基础。在JavaScript这门轻量级,解释型的脚本语言中,处理数据的两个基本概念是常量(Constants)和变量(Variables)。理解它们的区别与用法,对于编写高效、可维护的代码至关重要。变量:数据的灵活容器在JavaScript中,变量可以被视为数据的容器。......
  • C++学习笔记五:变量与数据类型(Auto类型)
    Auto允许编译器自己来推断变量的类型,这种新功能是在c++11引入的。这个关键字结合for循环使用可以节省变量类型的重复输入。VSCode可以在鼠标移动到变量上之后直接显示变量的类型。autovar1{12};//intautovar2{13.0};//doubleautovar3{14.0f};//floatautovar4{15......