当前位置: 首页 > wzjs >正文

网站建设的重要性意义与价值外链代发2分一条

网站建设的重要性意义与价值,外链代发2分一条,网站建设个人网银,分类信息网站建设价格目录 1️⃣ any、unknow和never 2️⃣ 函数重载 3️⃣ typeof和keyof(配合构建字典类型的Demo,巨好用‼️) 4️⃣ TS的条件类型 5️⃣ TS的声明合并 一、any、unknow和never any any类型表示一个值可以是任何类型。通常在不确定变量的类型…

目录

1️⃣ any、unknow和never
2️⃣ 函数重载
3️⃣ typeof和keyof(配合构建字典类型的Demo,巨好用‼️)
4️⃣ TS的条件类型
5️⃣ TS的声明合并


一、any、unknow和never

any

any类型表示一个值可以是任何类型。通常在不确定变量的类型,或者想要绕过TypeScript的类型检查的时候使用。但是使用any会导致类型安全的缺失,因为此时TypeScript不知道你在干什么,并且不会对类型为any的变量做任何类型检查。
滥用any的话会让TypeScript变成AnyScript,使得TS的使用没有意义。

unknow

unknown类型表示一个值可以是任何类型,但是你不能对它进行任何操作,直到你确定了它的具体类型。unknow就像更安全的any,因为必须进行类型检查或者类型断言后才能使用这些值

let value: unknown = 10;
value.toString(); // Code爆红:类型“unknown”上不存在属性“toString”。ts(2339)
(value as number).toString(); // Success
(value as string).toLocaleLowerCase(); // Success
if (typeof value === "number") {value.toString(); // Success
}
if (typeof value === "string") {value.toLocaleLowerCase();
}

never

never类型表示那些永远不会发生的值的类型。它通常用于表示函数永远不会返回的情况(例如,函数内部总是抛出错误或进入无限循环)。
暂时还不知道有啥用嘿嘿。


二、TS函数重载

JavaScript是没有函数重载的,但是TypeScript有。

function add(a: string, b: string): string;
function add(a: number, b: number): number;function add(a: any, b: any) {if (typeof a === "string" && typeof b === "string") {return a.concat(b);}if (typeof a === "number" && typeof b === "number") {return a + b;}
}

编译成JS后的代码也很简单:

function add(a, b) {if (typeof a === "string" && typeof b === "string") {return a.concat(b);}if (typeof a === "number" && typeof b === "number") {return a + b;}
}

三、typeof和keyof

在TypeScript中,typeof可以用作类型查询运算符。当你将typeof应用于一个变量时,它会返回该变量的类型。例如:

const example = { name: "Alice", age: 30 };
type Person = typeof example;
const person: Person = {name: "Bob",age: 25,gender: "male", // 对象字面量只能指定已知属性,并且“gender”不在类型“{ name: string; age: number; }”中。ts(2353)
};

keyof用于获取类型中所有公共属性的联合类型。它通常与typeof一起使用,以从对象类型中提取键值。例如:

type PersonKeys = keyof Person; // "name" | "age"
const nameKey: PersonKeys = "name"; // Success

结合这两个运算符,可以在TypeScript中构建非常精确的类型系统。例如之前在实习的时候遇到过这样的需求:

const dictMap = {college: "system_college",semester: "system_semester",courseProperty: "system_course_property",
} as const; // as const是必要的// 需求(1):定义一个类型Dict,属性key的值只能取自dicMap的values,属性value的值为string
// 需求(2):dictMap在后续版本中可能改变,所以Dict的属性不能写死
interface Dict {key: (typeof dictMap)[keyof typeof dictMap];value: string
}// 用法
const collegeDict: Dict = {key: dictMap.college,value: "College of Engineering"
}

四、TS的条件类型

在TS中可以根据条件从两种类型中选择一种类型。

type SpecialType<T> = T extends number ? bigint : string;
const bigNumber: SpecialType<number> = BigInt(10);
const stringValue: SpecialType<string> = "hello";

五、TS的声明合并

在 TypeScript 中,声明合并是指编译器会自动合并多个相同名称的类型声明为一个单一的声明。这种合并机制允许你从不同的地方定义类型、接口或命名空间,并将它们合并为一个整体,从而提供更灵活和强大的类型系统。
TypeScript 支持以下几种声明的合并:接口合并、命名空间合并、枚举合并。以接口合并为例:

interface Box {height: number;width: number;
}interface Box {scale: number;
}// 合并后的 Box 接口:
// interface Box {
//   height: number;
//   width: number;
//   scale: number;
// }

写在最后:为啥开这个专栏,纯粹是因为今天面试字节的时候,面试官问:JS和TS哪个用的多?我装杯:包是TS的🕶️。结果就是被拷打的无地自容,然后才意识到自己对TS的学习只停留在很浅薄的类型检测上。
所以这篇文章(这个专栏)持续更新,后续待补充的:枚举值、泛型、高级类型、装饰器、模块、命名空间、映射类型、工具类型。先吃宵夜去了😋。

http://www.dtcms.com/wzjs/250445.html

相关文章:

  • wordpress 文件下载长沙seo优化排名
  • 做网站广告中敏感词会涉及到工商软文案例大全300字
  • 邢台网站制作哪家好西安关键词优化平台
  • 做化工哪个网站好刷粉网站推广免费
  • 扫二维码直接进入网站怎么做免费推广app软件下载
  • 亚马逊是b2b电子商务网站吗如何在各大网站发布信息
  • 建设工程法律网站腾讯企业邮箱登录入口
  • 淮安做网站seo合肥百度推广优化排名
  • 网站登陆页面怎么做柳州今日头条新闻
  • 怎么做区块链网站我想做百度推广
  • 做网站用哪个电脑跨境电商平台推广
  • 制作网站用什么语言设计网站都有哪些
  • 延安网站建设哪家专业seo优化范畴
  • 湛江 网站建设站长工具网站测速
  • 湘潭学校网站建设 磐石网络专注windows优化大师怎么卸载
  • 专业做网站的顺德公司一键生成个人网站
  • 小程序怎么做电影网站share群组链接分享
  • 网盘可以做网站空间吗如何刷seo关键词排名
  • 适合代码新手做的网站网站模板大全
  • 烟台专业的做网站公司百度霸屏推广
  • 博星卓越 网站开发方案广东新闻今日大件事
  • 公司内网网站建设百度快照入口
  • seo点击工具网站收录优化
  • 做网站的搜索引擎北京seo网站推广
  • 2019怎么做网站赚钱seo软件全套
  • 工程管理毕业设计代做网站怎么推广游戏叫别人玩
  • wordpress web发布模块seo交流论坛seo顾问
  • 成都鲜花网站建设seo人员工作内容
  • 网站首页的滚动图片怎么做上海seo公司排名榜
  • 天长网站制作沈阳优化网站公司