首页 前端知识 TypeScript

TypeScript

2024-05-07 13:05:13 前端知识 前端哥 267 156 我要收藏

什么是TypeScript

TypeScript是JavaScript的超集,TypeScript扩展了JavaScript的语法,TypeScript编译成JavaScript,让TypeScript可以运行在任何浏览器和Node环境中。TypeScript是一种给JavaScript添加特性的语言扩展。

为什么要使用TypeScript

TypeScript增加了代码的可读性和可维护性。TypeScript增加了编译时的类型检查,使得很多错误在开发时就被发现。

TypeScript特点

支持最新的JavaScript新特性。
支持代码静态检查。
支持如C C 等语言的代码特性(枚举、泛型、接口、类…)。

安装

yarn global add typescript
复制

查看版本

tsc -v
复制

编译

tsc 路径 文件名
复制

编译并监听

tsc 路径 文件名 -w
复制

配置文件

tsc --init
复制
{
"compilerOptions": {
"target": "es2016", *// 指定编译后 ECMAScript 的版本*
"module": "commonjs", *// 指定模块系统 commonJS、AMD...*
"sourceMap": true, *// 生成 sourceMap 文件*
"outDir": "./dist", *// 指定输出目录*
"rootDir": "./src", *// 指定输入目录*
"strict": true *// 启用所有严格类型检查选项*
...
}
}
复制

基本类型

let str:string = 'hello ts!';
let und:undefined = undefined;
let nu:null = null;
let bool:boolean = true;
let sy:symbol = Symbol();
复制

特殊类型 (any、unknown、never、void)

any:表示任意类型,可以被赋予任何类型的值,并且对这些值不做任何类型检查。

unknown:更安全的 any 类型,代表了一个未知的类型。当确实不知道一个值的确切类型,但是又希望保持类型检查时使用。

never:表示永远不应该发生的值。比如抛出错误或者死循环,那么该函数永远不会执行完,不可能有返回值。

void:表示没有类型,通常用于表示函数没有返回值。

let any1:any;
any1 = 1;
any1 = 'a';
any1 = true;
let unk:unknown = 5;
if(typeof(unk) === 'number'){
console.log(unk * 2)
}
function throwError(message: string): never {
throw new Error(message);
}
try {
throwError("Something went wrong!");
} catch (error) {
console.error(error); // 输出: Something went wrong!
}
function fn(m:string): void {
console.log(m)
}
复制

值类型

let uname: 'james' = 'james'
uname = 'kd' // 不能将类型kd分配给类型"james"。
复制

数组和元组

  • 数组:使用类型 [] 来表示。
// 普通数组
let arr: string[] = ['a', 'b', 'c'];
let arr1:Array<number> = [1, 2, 3];
// 二维数组
let arr: number[][] = [
[1, 2],
[3, 4],
];
复制
  • 元组:元组可以包含不同类型的元素,并且元素的类型、位置、数量都是确定的。
    注意:给原本数组继续添加数据时,后添加的数据必须是前面数据的类型中的一个。
let tuple: [number, string] = [1, "hello"];
tuple.push("A");
复制

对象

注意:对于对象来说,应该限定对象中每个属性的类型,而不是限定对象这个整体的类型。

  • 定义对象
// 不推荐
let obj:object;
obj = [];
obj = {
};
obj = function (){
}
let user: {
name: string; age: number } = {
name: "张三",
age: 18,
};
复制
  • 可选属性:在属性后面加上问号(?),表示该属性可有可无。
    注意:一个对象中可以有任意多个可选属性。
let user: {
name: string; age?: number } = {
name: "张三" };
复制
  • 任意属性:在已有属性后,用中括号([])括起来。
    注意
    一个对象只能有一个任意属性。
    任意属性表示多个其他的属性,值的类型必须与定义时一致。
    任意属性的类型一定是其他类型的父类,也就是必须要包含其他类型,比如:any包含string,但是number就不包含string。
let user: {
name: string; [propName: string]: string } = {
name: "张三丰",
address: "北京",
id: "xxx01",
};
复制
  • 只读属性:在属性前面加上readonly,表示该属性值不能被修改。
    注意:一个对象中可以有任意多个只读属性。
let user: {
readonly name: string; age: number } = {
name: "张三",
age: 18,
};
复制

内置对象

let sym: symbol = Symbol("sym");
let date: Date = new Date();
let reg: RegExp = /[a-z]/;
let error: Error = new Error("error");
let allDiv: NodeList = document.querySelectorAll("div");
let body: HTMLElement = document.body;
复制

函数

  • 定义
// 有返回值
function
复制
转载请注明出处或者链接地址:https://www.qianduange.cn//article/7355.html
标签
评论
发布的文章

【Linux笔记】基础IO(上)

2025-03-27 13:03:40

大家推荐的文章
会员中心 联系我 留言建议 回顶部
浏览器升级提示:您的浏览器版本较低,建议您立即升级为知了极速浏览器,极速、安全、简约,上网速度更快!立即下载
复制成功!