TypeScript基础知识

news/2024/7/21 9:16:01 标签: typescript, harmonyos

目录

关键字

JavaScript关键字

TypeScript关键字

TypeScript 基础类型

声明变量

声明变量的方式

变量命名规则

变量作用域

TypeScript 运算符

算术运算符

关系运算符

逻辑运算符

位运算符

赋值运算符

三元运算符

类型运算符


关键字

JavaScript关键字

abstract

else

instanceof

super

boolean

enum

int

switch

break

export

interface

synchronized

byte

extends

let

this

case

false

long

throw

catch

final

native

throws

char

finally

new

transient

class

float

null

true

const

for

package

try

continue

function

private

typeof

debugger

goto

protected

var

default

if

public

void

delete

implements

return

volatile

do

import

short

while

double

in

static

with

TypeScript关键字

break

as

catch

switch

case

if

throw

else

var

number

string

get

module

type

instanceof

typeof

public

private

enum

export

finally

for

while

void

null

super

this

new

in

return

true

false

any

extends

static

let

package

implements

interface

function

new

try

yield

const

continue

do

TypeScript 基础类型

数据类型

关键字

描述

任意类型

any

声明为 any 的变量可以赋予任意类型的值。

数字类型

number

双精度 64 位浮点值。它可以用来表示整数和分数。TypeScript 和 JavaScript 没有整数类型

let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744;    // 八进制
let decLiteral: number = 6;    // 十进制
let hexLiteral: number = 0xf00d;    // 十六进制

字符串类型

string

一个字符系列,使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式。

let name: string = "Runoob"; 
let years: number = 5; 
let words: string = `您好,今年是 ${ name } 发布 ${ years + 1} 周年`;

布尔类型

boolean

表示逻辑值:true 和 false。

let flag: boolean = true;

数组类型

声明变量为数组。

// 在元素类型后面加上[] 
let arr: number[] = [1, 2];
// 或者使用数组泛型 
let arr: Array<number> = [1, 2];

元组

元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。

let x: [string, number]; 
x = ['Runoob', 1]; // 运行正常 
x = [1, 'Runoob']; // 报错 
console.log(x[0]); // 输出 Runoob

枚举

enum

枚举类型用于定义数值集合。

enum Color {Red, Green, Blue}; 
let c: Color = Color.Blue; 
console.log(c); // 输出 2

void

void

用于标识方法返回值的类型,表示该方法没有返回值。

function hello(): void { 
    alert("Hello Runoob"); 
}

null

null

表示对象值缺失。

在 JavaScript 中 null 表示 "什么都没有"。null是一个只有一个值的特殊类型。表示一个空对象引用。用 typeof 检测 null 返回是 object。

undefined

undefined

用于初始化变量为一个未定义的值。

在 JavaScript 中, undefined 是一个没有设置值的变量。typeof 一个没有值的变量会返回 undefined。Null 和 Undefined 是其他任何类型(包括 void)的子类型,可以赋值给其它类型,如数字类型,此时,赋值后的类型会变成 null 或 undefined;

而在TypeScript中启用严格的空校验(--strictNullChecks)特性,就可以使得null 和 undefined 只能被赋值给 void 或本身对应的类型;

// 启用 --strictNullChecks
let x: number;
x = 1; // 编译正确
x = undefined;    // 编译错误
x = null;    // 编译错误

// 启用 --strictNullChecks
let x: number | null | undefined;
x = 1; // 编译正确
x = undefined;    // 编译正确
x = null;    // 编译正确

never

never

never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。

这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环)

let x: never;
let y: number;

// 编译错误,数字类型不能转为 never 类型
x = 123;

// 运行正确,never 类型可以赋值给 never类型
x = (()=>{ throw new Error('exception')})();

// 运行正确,never 类型可以赋值给 数字类型
y = (()=>{ throw new Error('exception')})();

// 返回值为 never 的函数可以是抛出异常的情况
function error(message: string): never {
    throw new Error(message);
}

// 返回值为 never 的函数可以是无法被执行到的终止点的情况
function loop(): never {
    while (true) {}
}

声明变量

声明变量的方式

在 JavaScript 中可以通过关键字 var 、 let 、 const 来声明变量,当然 TypeScript 中同样也可以。

这三种声明变量的方式各有不同,如下所示:

  • var 关键字声明变量,其作用于为该语句所在的函数内, 且存在变量提升现象。
  • let 的声明类似于 var,但是它的作用域为该语句所在的代码块内,不存在变量提升。注意它们一个是函数内,一个是代码块内,代码块就是直接使用 {} 括起来的代码。
  • const 是 let 的一个扩展,它可以防止重新分配变量,一般用来声明常量,在后面出现的代码中不能再修改常量的值。

变量命名规则

在讲如何声明变量之前,我们先来看一下 TypeScript 的变量命名规则,如下所示:

  • 变量名称可以包含数字、字母、下划线 _ 和美元 $ 符号,其他都不可以,例如 a、abc、AA、a_ 都符合命名规范。
  • 变量名不能以数字作为开头,例如 7a 就不符合变量的命名规范,而 a7 是可以的。

使用关键字 var 声明变量

首先在 JavaScript 语言中我们都是使用关键字 var 来声明变量的。那么为什么在 TypeScript 中我们更偏向于使用 let,下面我们会讲到原因。

在 TypeScript 中声明变量其实就和 JavaScript 很类似。但因为一个是强类型语言一个是弱类型语言,所以两者在声明变量的格式上会有一些不同。

在 TypeScript 中声明变量,一共有四种方式:

  • 第一种,声明变量的类型及初始值,需要在变量名后面加上变量类型和初始值

var [变量名] : [类型] = 值; // 例如 var a : number = 1;

  • 第二种,声明变量的类型,但是不赋初始值。在这种情况下,该变量的值默认为 undefined

var [变量名] : [类型]; // 例如 var a:number;

  • 第三种,声明变量并赋初始值,但不声明类型,此时变量类型将被设置为any(任意类型),这种声明方式和 JavaScript 中的类似

var [变量名] = 值; // 例如 var a = 1;

  • 第四种,不声明变量类型,且不赋初始值。在这种情况下,变量的数据类型为 any,初始化值为 undefined

var [变量名]; // 例如 var a;

变量作用域

一个变量的作用域指定了这个变量的定义位置,程序中变量的可用性是由它作用域决定的。变量不可以在作用域以外的地方使用。

TypeScript 的作用域分为下面三种:

  • 全局作用域:全局变量定义在程序结构的外部,可以在代码的任何位置使用。
  • 局部作用域:局部变量,只能在声明它们的函数或代码块中访问。
  • 类作用域:也可称为字段,类变量声明在一个类里头,但在类的方法外面,该变量可以通过类的对象来访问。类变量也可以是静态的,静态的变量可以通过类名直接访问。

TypeScripe示例:

var global_num = 12          // 全局变量
class Numbers { 
   num_val = 13;             // 实例变量
   static sval = 10;         // 静态变量
   
   storeNum():void { 
      var local_num = 14;    // 局部变量
   } 
} 
console.log("全局变量为: "+global_num)  
console.log(Numbers.sval)   // 静态变量
var obj = new Numbers(); 
console.log("实例变量: "+obj.num_val)

JavaScripe示例:

var global_num = 12; // 全局变量
var Numbers = /** @class */ (function () {
    function Numbers() {
        this.num_val = 13; // 实例变量
    }
    Numbers.prototype.storeNum = function () {
        var local_num = 14; // 局部变量
    };
    Numbers.sval = 10; // 静态变量
    return Numbers;
}());
console.log("全局变量为: " + global_num);
console.log(Numbers.sval); // 静态变量
var obj = new Numbers();
console.log("实例变量: " + obj.num_val);

TypeScript 运算符

TypeScript 主要包含以下几种运算:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 三元/条件运算符
  • 类型运算符

算术运算符

运算符

描述

例子

x 运算结果

y 运算结果

+

加法

x=y+2

7

5

-

减法

x=y-2

3

5

*

乘法

x=y*2

10

5

/

除法

x=y/2

2.5

5

%

取模(余数)

x=y%2

1

5

++

自增

x=++y

6

6

x=y++

5

6

--

自减

x=--y

4

4

x=y--

5

4

关系运算符

运算符

描述

比较

返回值

==

等于

x==8

false

x==5

true

!=

 不等于

x!=8

true

>

 大于

x>8

false

<

 小于

x<8

true

>=

 大于或等于

x>=8

false

<=

 小于或等于

x<=8

true

逻辑运算符

运算符

描述

例子

&&

and

(x < 10 && y > 1) 为 true

||

or

(x==5 || y==5) 为 false

!

not

!(x==y) 为 true

位运算符

运算符

描述

例子

类似于

结果

十进制

&

AND,按位与处理两个长度相同的二进制数,两个相应的二进位都为 1,该位的结果值才为 1,否则为 0。

x = 5 & 1

0101 & 0001

0001

 1

|

OR,按位或处理两个长度相同的二进制数,两个相应的二进位中只要有一个为 1,该位的结果值为 1。

x = 5 | 1

0101 | 0001

0101

 5

~

取反,取反是一元运算符,对一个二进制数的每一位执行逻辑反操作。使数字 1 成为 0,0 成为 1。

x = ~ 5

 ~0101

1010

 -6

^

异或,按位异或运算,对等长二进制模式按位或二进制数的每一位执行逻辑异按位或操作。操作的结果是如果某位不同则该位为 1,否则该位为 0。

x = 5 ^ 1

0101 ^ 0001

0100

 4

<<

左移,把 << 左边的运算数的各二进位全部左移若干位,由 << 右边的数指定移动的位数,高位丢弃,低位补 0。

x = 5 << 1

0101 << 1

1010

 10

>>

右移,把 >> 左边的运算数的各二进位全部右移若干位,>> 右边的数指定移动的位数。

x = 5 >> 1

0101 >> 1

0010

2

>>>

无符号右移,与有符号右移位类似,除了左边一律使用0 补位。

x = 2 >>> 1

0010 >>> 1

0001

1

赋值运算符

运算符

例子

实例

x 值

= (赋值)

x = y

x = y

x = 5

+= (先进行加运算后赋值)

x += y

x = x + y

x = 15

-= (先进行减运算后赋值)

x -= y

x = x - y

x = 5

*= (先进行乘运算后赋值)

x *= y

x = x * y

x = 50

/= (先进行除运算后赋值)

x /= y

x = x / y

x = 2

三元运算符

三元运算有 3 个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

Test ? expr1 : expr2

  • Test − 指定的条件语句
  • expr1 − 如果条件语句 Test 返回 true 则返回该值
  • expr2 − 如果条件语句 Test 返回 false 则返回该值

类型运算符

typeof 运算符

typeof 是一元运算符,返回操作数的数据类型。

instanceof

instanceof 运算符用于判断对象是否为指定的类型。


http://www.niftyadmin.cn/n/5262216.html

相关文章

Python 模块的使用

本篇主要为python 模板介绍和使用&#xff0c;包含如何创建和使用自定义模块&#xff0c;引入模块的方式及包内容介绍。 概述 在项目开发中随着代码量越来越多&#xff0c;代码就会越来越难以维护。为了解决难以维护的问题&#xff0c;我们把很多相似功能的函数分组&#xff0…

【FPGA/verilog -入门学习2】verilog 生成上升沿下降沿脉冲

需求1&#xff1a;使用脉冲边沿检测法设计一个上下降沿检测功能 使用脉冲边沿检测法设计一个上下降沿检测功能 1&#xff0c;使用clk 脉冲来临时pluse 移位赋值 preg1 <pluse preg2<preg2 preg1 比pluse 晚一个时钟&#xff0c; preg2比preg1晚一个时钟 在利用 与/…

安全基础从0开始

文章目录 常见名词小实战 网站搭建小实战抓包模拟器状态码返回值网站搭建WEB应用安全漏洞 数据包&封包&信息收集**参考点** 常见名词 前后端&#xff0c;POC/EXP&#xff0c;Payload/Shellcode&#xff0c;后门/Webshell&#xff0c;木马/病毒&#xff0c; 反弹&…

我常用的几个经典Python模块

Python常用的模块非常多&#xff0c;主要分为内置模块和第三方模块两大类&#xff0c;且不同模块应用场景不同又可以分为文本类、数据结构类、数学运算类、文件系统类、爬虫类、网络通讯类等多个类型。 大家常用的内置模块比如&#xff1a;math、re、datetime、urllib、os、ra…

【C语言:文件操作】

文章目录 1. 什么是文件1.1为什么有文件&#xff1f;1.2什么是文件1.3文件的分类1.4文件缓冲区 2.文件的打开与关闭2.1文件的打开(fopen)2.2文件的关闭(fclose) 3.顺序读写数据文件3.1读写字符3.2读写字符串3.3格式化读写3.4二进制读写 4.文件的随机读写4.1fseek4.2ftell4.3rew…

MySQL- in(集合) 和 not in(...) 的使用和练习

1. 基础用法 mysql中in常用于where表达式中&#xff0c;其作用是查询某个范围内的数据。 select * from where field in (value1,value2,value3,…) 当 IN 前面加上 NOT 运算符时&#xff0c;表示与 IN 相反的意思&#xff0c;即不在这些列表项内选择 select * from where …

【计算机网络】TCP socket编程

目录 ​编辑 一、前言 二、概念 1、通信模型&#xff1a; 2、端口&#xff1a; 3、IP地址&#xff1a; 4、协议&#xff1a; 三、简单搭建 1、服务器代码 2、客户端代码 一、前言 Socket&#xff08;套接字&#xff09;是计算机网络中用于实现进程之间通信的一种机制…

想自学黑客(网络安全),一般人我劝你还是算了

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防…