请人做网站设计的方案如何做聊天网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 09:55
当前位置: 首页 > news >正文
请人做网站设计的方案,如何做聊天网站,樟树网站制作,网站速度诊断 慢文章目录 使用技巧TypeScript内置的工具类型keyofextends 限定泛型interface 与 type 区别 TypeScript作为JavaScript的超集,通过提供静态类型系统和对ES6新特性的支持,使JavaScript开发变得更加高效和可维护。掌握TypeScript的使用技巧,可以帮助我们更好地开发和组织JavaScrip… 文章目录 使用技巧TypeScript内置的工具类型keyofextends 限定泛型interface 与 type 区别 TypeScript作为JavaScript的超集,通过提供静态类型系统和对ES6新特性的支持,使JavaScript开发变得更加高效和可维护。掌握TypeScript的使用技巧,可以帮助我们更好地开发和组织JavaScript项目。刚开始用的时候感觉好多限制特别是配置静态类型检测后就容易各种报错恨不得都用any 那岂不是成了AnyScript不过熟能生巧用得多了就会爱上这个语言。这里总结了一些平时用到ts技巧。 使用技巧
当使用TypeScript进行开发时有一些常用的技巧可以帮助你提高代码质量和开发效率。以下是一些TypeScript使用技巧 类型注解和类型推断尽量为变量、函数参数、函数返回值等添加类型注解以增加代码的可读性和类型安全性。同时TypeScript也会自动推断很多类型充分利用类型推断特性。 使用接口和类型别名使用接口和类型别名来定义自定义类型使代码更具表达力和清晰度。
// 使用接口
interface Person {name: string;age: number;
}// 使用类型别名
type Point { x: number; y: number };泛型使用泛型来增加代码的灵活性使函数和类能够处理多种类型的数据。
function toArrayT(value: T): T[] {return [value];
}枚举使用枚举来定义一组具有名字的常量值提高代码可读性。
enum Color {Red,Green,Blue,
}非空断言和可选链使用非空断言!来告诉编译器一个值一定不为null或undefined使用可选链?.来简化处理可能为null或undefined的属性和方法。
const name: string maybeName!; // 非空断言
const age person?.age; // 可选链确定赋值断言在声明变量时使用确定赋值断言!来告诉编译器该变量一定会在使用前被赋值。
let value!: number;TypeScript内置的工具类型
当使用 TypeScript 进行开发时有一些常用的类型工具utility types可以帮助你更好地处理类型并提高代码质量和开发效率。下面是对 Partial、Record、Pick、Omit、Exclude 和 Parameters 这些类型工具的中文详细解释 PartialType部分类型: Partial 是 TypeScript 内置的一个类型工具用于使给定类型的所有属性变为可选属性。它创建了一个新的类型其中给定类型 Type 的所有属性都变成了可选属性。示例 interface Person {name: string;age: number;
}type PartialPerson PartialPerson;// 等同于
// interface PartialPerson {
// name?: string;
// age?: number;
// }RecordKey, Type记录类型: Record 是 TypeScript 内置的类型工具用于创建一个由指定键和给定值类型组成的对象类型。它接受两个类型参数 Key 和 Type并创建一个对象类型其中每个属性的键是类型 Key值是类型 Type。示例 type AgeMap Recordstring, number;// 等同于
// interface AgeMap {
// [key: string]: number;
// }PickType, Keys挑选类型: Pick 是 TypeScript 内置的类型工具用于从给定类型中挑选出特定的属性形成新的类型。它接受两个类型参数 Type 和 Keys并创建一个新的类型其中只包含类型 Type 中由 Keys 指定的属性。示例 interface Person {name: string;age: number;address: string;
}type PersonNameAndAge PickPerson, name | age;// 等同于
// interface PersonNameAndAge {
// name: string;
// age: number;
// }OmitType, Keys省略类型: Omit 是 TypeScript 内置的类型工具用于从给定类型中省略特定的属性形成新的类型。它接受两个类型参数 Type 和 Keys并创建一个新的类型其中包含了类型 Type 中除了 Keys 指定的属性以外的所有属性。示例 interface Person {name: string;age: number;address: string;
}type PersonWithoutAddress OmitPerson, address;// 等同于
// interface PersonWithoutAddress {
// name: string;
// age: number;
// }ExcludeType, ExcludedUnion排除类型: Exclude 是 TypeScript 内置的类型工具用于从给定类型中排除可以赋值给 ExcludedUnion 的成员。它接受两个类型参数 Type 和 ExcludedUnion并创建一个新的类型其中只包含类型 Type 中不可赋值给 ExcludedUnion 的成员。示例 type MyNumbers number | string | boolean;type OnlyNumbers ExcludeMyNumbers, string | boolean;// 等同于
// type OnlyNumbers number;ParametersType函数参数类型: Parameters 是 TypeScript 内置的类型工具用于从给定函数类型中提取出参数的类型。它接受一个函数类型 Type 作为参数并返回一个由该函数的参数类型组成的元组类型。示例 type MyFunction (name: string, age: number) void;type FunctionParameters ParametersMyFunction;// 等同于
// type FunctionParameters [string, number];keyof
在 TypeScript 中keyof 是一个关键字和类型操作符它用于获取一个类型的所有属性名组成的联合类型。keyof 可以结合泛型、索引类型等特性来实现许多有用的类型操作。
使用 keyof 的语法是 keyof Type其中 Type 是一个类型。它返回一个联合类型包含了 Type 类型中所有属性的名称。这个联合类型可以用来访问或操作 Type 类型中的属性。keyof 与 Object.keys 略有相似只不过 keyof 取 interface 的键。
下面是一个简单的示例代码
interface Person {name: string;age: number;gender: string;
}type PersonKey keyof Person;
// 等同于type PersonKey name | age | gender在这个例子中keyof Person 返回一个联合类型包含了 Person 类型中所有属性的名称。结果类型是 name | age | gender。
keyof 可以与其他 TypeScript 特性结合使用例如
通过索引类型访问对象属性
function getPropertyT, K extends keyof T(obj: T, key: K) {return obj[key];
}const person: Person { name: Alice, age: 30, gender: female };
const name getProperty(person, name); // name的类型是string确定属性是否存在
function hasPropertyT, K extends keyof T(obj: T, key: K): boolean {return key in obj;
}const hasAge hasProperty(person, age); // hasAge的值是true
const hasEmail hasProperty(person, email); // hasEmail的值是falseextends 限定泛型
在 TypeScript 中可以使用 extends 关键字来限定泛型类型的范围确保传入的泛型参数满足一定的条件。这种方式称为泛型约束或泛型限定。通过泛型约束我们可以对泛型进行更精确的类型检查提高代码的类型安全性。
下面是几个使用 extends 关键字限定泛型的例子
简单的泛型约束
function printPropertyT extends { name: string }(obj: T) {console.log(obj.name);
}printProperty({ name: Alice, age: 30 }); // OK
printProperty({ age: 30 }); // Error: 缺少name属性在这个例子中使用 extends { name: string } 来限定泛型 T 必须具有一个 name 属性否则会在调用时报错。
使用多个泛型约束
function combineT extends string, U extends string(a: T, b: U): string {return a b;
}const result combine(Hello, , TypeScript); // result的值是 Hello, TypeScript在这个例子中使用 extends string 来限定泛型 T 和 U 必须是 string 类型确保只有 string 类型的参数可以传入函数 combine 中。
使用接口约束泛型
interface Lengthwise {length: number;
}function printLengthT extends Lengthwise(obj: T) {console.log(obj.length);
}printLength(Hello); // 输出: 5
printLength([1, 2, 3]); // 输出: 3在这个例子中使用 extends Lengthwise 来限定泛型 T 必须满足 Lengthwise 接口即必须有一个 length 属性。
interface 与 type 区别
在 TypeScript 中interface 和 type 是两种用来定义类型的方式它们有一些相似之处但也有一些不同之处。下面是它们的区别 interface interface 是用来描述对象的形状的类型声明。它可以用来定义对象的结构包含属性、方法和索引签名等。interface 可以被合并当多次定义同名的 interface 时它们会自动合并为一个。 interface Person {name: string;age: number;
}interface Person {gender: string;
}// 合并后等同于
// interface Person {
// name: string;
// age: number;
// gender: string;
// }type type 是用来定义任意类型的类型别名。它可以用来定义原始类型、联合类型、交叉类型、函数类型等。type 不能被合并当多次定义同名的 type 时会报错。要合并需要用 连接 type Age number;type Gender male | female;type Person {name: string;age: Age;gender: Gender;
};type both Person Age // 这样将两个类型合并成一个使用场景 interface 通常用于描述对象的结构它更适合用于定义对象和类的类型。type 可以定义更复杂的类型包括联合类型、交叉类型和函数类型等它更适合用于定义临时的类型别名。
- 上一篇: 请人做网站设计的方案北京网络平台公司有哪些
- 下一篇: 请问门户网站是什么意思网站搜索功能模块
相关文章
-
请人做网站设计的方案北京网络平台公司有哪些
请人做网站设计的方案北京网络平台公司有哪些
- 技术栈
- 2026年03月21日
-
请人开发一个网站需要多少钱西安app制作公司
请人开发一个网站需要多少钱西安app制作公司
- 技术栈
- 2026年03月21日
-
请人建网站应注意什么产品软文范例
请人建网站应注意什么产品软文范例
- 技术栈
- 2026年03月21日
-
请问门户网站是什么意思网站搜索功能模块
请问门户网站是什么意思网站搜索功能模块
- 技术栈
- 2026年03月21日
-
请选择一个网站制作软件wordpress判断用户是否登录
请选择一个网站制作软件wordpress判断用户是否登录
- 技术栈
- 2026年03月21日
-
庆阳建设局网站小企业管理系统
庆阳建设局网站小企业管理系统
- 技术栈
- 2026年03月21日






