typescript 基础语法

数据类型

关键字

  • let
  • const
  • var

数据类型

类型

关键字

示例

任意类型

any

let a: any = "1";let b: any = 2

数字类型

number

let c: number = 3

字符串类型

string

const s:string = "ok"

布尔类型

boolean

const d: boolean = true;

数组类型

[]/Array

const e1: Array<number> = [1, 2];const e2: number[] = [1, 2];

枚举类型

string

enum Animals {dog, cat, pig,};let g: Animals;

null类型

null

表示对象值缺失。

void类型

void

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

undefined类型

undefined

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

never类型

never

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

元组类型

[]

const e1: Array = [1, 2];const e2: number[] = [1, 2];

异常抛出

let x = () => {
  throw new Error("这是一个异常");
};

异常捕获

类型断言

  • 可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型
let m: string = "123";
// let n: number = Number(m); // 类型强转
let n: number = <number>(<any>m);
console.log(typeof(n))
console.log(n*2);

运算符

let num: number = 1;
num = num + 1 - 1; // 加法,减法
num++; // 自增
num--; // 自减
--num; // 自减
++num; // 自增
num = num * 10; // 乘法
num = num / 2; // 除法
num += 1; //运算并赋值
num -= 1;
num *= 2;
num /= 2;
console.log("常规运算符:");
console.log("原数 ---> ", num);
console.log(">= 0 ---> ", num >= 0); // 大于等于
console.log("!= ---> ", num != 0); // 不等于
console.log("== ---> ", num == 0); // 等于
console.log("&& ---> ", num > 0 && num < 3); // and
console.log("|| ---> ", num > 0 || num < -1); // or
console.log("! ---> ", !num); // not

let num1: number = 2;
console.log("位运算符:");
console.log("& ---> ", num1 & 1); // 与
console.log("| ---> ", num1 | 1); // 或
console.log("~ ---> ", ~num1); // 非
console.log("^ ---> ", num1 ^ 1); // 异或
console.log(">> ---> ", num1 >> 1); // 位运算右移
console.log(">>> ---> ", num1 >>> 1); // 无符号右移

条件与循环语句

let num:number = 0.5
if (num > 1) {
  console.log("num > 1");
} else if (0 < num && num < 1) {
  console.log("0 < num < 1");
} else {
  console.log("num < 0");
}

switch (num) {
  case 1:
    console.log(1);
    break; // 终止循环
  case 2:
    console.log(2);
    break;
  default:
    console.log(num);
    break;
}
// for 条件循环
let arr: Array<number> = [1, 2, 3, 4, 50];
for (var i = 0; i < arr.length; i++) {
  console.log("arr condition-- > ", arr[i]);
}
// for 全部循环
var index: any;
for (index in arr) {
  console.log("arr in -- > ", arr[index]);
}
// for 数组元素循环
for (let ele of arr) {
  console.log("arr of -- > ", ele);
}
// 数组元素与索引遍历
arr.forEach((val_, idx_, arr_) => {
  console.log(val_, idx_, arr_);
  arr_[0] = 100;
});
arr.every((val_, idx_, arr_) => {
  console.log(val_, idx_, arr_);
  arr_[0] = 100;
  return true; // 这里表示继续遍历
});
// while 条件循环
while (index < arr.length) {
  console.log("while -- > ", arr[index]);
  index++;
  if (index > 100) {
    break; // 跳出循环体
  } else {
    continue; // 跳过本次循环
  }
}

for (;;){
  console.log("死循环代码")
  }

while(true){
  console.log("死循环代码Ï")
}

函数

// 定义函数(包含参数与返回)
function add(a: number, b: number): number {
  return a + b;
}
// 调用
add(1, 2);
// ?表示可选参数, ...表示多个参数组合,相当于python的元组传参
function print(output?: boolean, ...s: string[]): void {
  if (output) {
    let s_ = s.join("");
    console.log(s_);
  } else {
    null;
  }
}
print(true, "123", "women");

// 匿名函数
let fn = function () {
  console.log("匿名函数");
};
fn();
// lambda函数,也被称为箭头函数
let sub = (a: number, b: number) => console.log(a - b);
sub(10, 3);

// 函数重载
function print2(n: number): void;
function print2(s: string): void;
function print2(a: any) {
  console.log(a);
}

print2("123");
// 与上面类似
function print3(a: number | string) {
  console.log(a);
}
print3(123);

内置对象

  • Number
// 声明Number类型
let num2: number = 1;
let num3 = new Number(2);
// 方法
console.log(num1.toFixed()); // 转字符串 "1"
console.log(num1.toFixed(2)); // 转字符串 "1.00"
console.log(num1.toLocaleString());
console.log(num2.toString(2)); // 转二进制字符串 10
  • String
// 声明String类型
let s1: string = "ok";
let s2 = new String("ok");
// 方法或属性
console.log(s1.length); // 字符串长度
console.log(s1.charAt(1)); // 返回指定位置的字符
console.log(s1.charCodeAt(1)); // 返回指定位置的unicode编码
console.log(s2.concat(s1)); // 字符串拼接
console.log(s1.indexOf("k")); // 返回字符首次出现的位置
console.log(s1.lastIndexOf("k")); // 返回字符最后一次出现的位置
console.log(s1.replace("o", "www")); // 替换字符,第一次参数位正则表达式
console.log(s1.toUpperCase()); // 大写
console.log(s1.toLowerCase()); // 小写
console.log(s1.slice(1)); // 切片
  • Array
// 声明Array类型
let arr1: Array<number> = [1, 2, 3];
let arr2: number[] = [1, 2, 3];
console.log(arr1.length); // 获取数组长度
arr1.push(4); // 向数组追加一个元素
console.log(arr1);
console.log(arr1.pop()); // 取出最后一个元素并返回
console.log(arr1.reverse()); // 数组反转
console.log(arr1.concat(arr2)); // 数组拼接
console.log(arr1.join("-")); // 将数组合并为字符串
console.log(arr1.map(Math.sqrt)); // 高阶函数
console.log(arr1.slice(1, 2)); // 数组切片
console.log(arr1.sort()); // 数组排序
console.log(arr1.toString()); // 将数组转为字符串
  • Map
// 声明Map对象
let mp = new Map();
mp.set("name", "jack"); // 添加键值对
mp.set("age", 1);
console.log(mp);
console.log(mp.size); // map 大小
console.log(mp.get("name")); // 根据键获取值
console.log(mp.has("age"));
  • 元组
// 声明元组
let tup = [1, "2"];
console.log(tup.keys()); //
console.log(tup.length);
console.log(tup.reverse()); // 元组反转
console.log(tup[0]);
tup.push("2234"); // 追加元素
console.log(tup);

变量的作用域

let var_a: number = 1; // 全局变量
function change() {
  let var_b: number = 2; // 局部变量,在函数内部访问
}