From 8f06062fdbed7f3b83d637ed50bfa77ee01598db Mon Sep 17 00:00:00 2001 From: sumingcheng Date: Tue, 10 Dec 2024 20:46:55 +0800 Subject: [PATCH] 1111 --- .../10.TypeScript\347\256\200\344\273\213.md" | 3 +++ .../40.\346\216\245\345\217\243.md" | 8 +++++++ ...30\347\272\247\347\261\273\345\236\213.md" | 22 +++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git "a/docs/Frontend/TypeScript/10.TypeScript\347\256\200\344\273\213.md" "b/docs/Frontend/TypeScript/10.TypeScript\347\256\200\344\273\213.md" index da5e188c..beca5434 100644 --- "a/docs/Frontend/TypeScript/10.TypeScript\347\256\200\344\273\213.md" +++ "b/docs/Frontend/TypeScript/10.TypeScript\347\256\200\344\273\213.md" @@ -132,6 +132,9 @@ TypeScript 支持两大类类型:原始类型(Primitive Types)和对象类型(Ob ```typescript let count = 0; // 推断为number类型 const name = 'TypeScript'; // 推断为string类型 + +// 对于 const 声明的变量,TypeScript 会进行更严格的字面量类型推断 +const status = 'active'; // 推断为 'active' 字面量类型,而不是 string ``` 但如果变量的类型不明确,例如一个变量的值可能是多种类型,就需要使用联合类型(Union Types): diff --git "a/docs/Frontend/TypeScript/40.\346\216\245\345\217\243.md" "b/docs/Frontend/TypeScript/40.\346\216\245\345\217\243.md" index 2399ccd6..fab20164 100644 --- "a/docs/Frontend/TypeScript/40.\346\216\245\345\217\243.md" +++ "b/docs/Frontend/TypeScript/40.\346\216\245\345\217\243.md" @@ -145,3 +145,11 @@ const square: Square = { ``` 上面的代码中,`Square`接口继承了`Shape`接口,因此它具有`color`属性,并且还添加了`sideLength`属性。 + +### 接口可以继承多个接口 + +```typescript +interface Button extends Shape, Clickable { + label: string; +} +``` diff --git "a/docs/Frontend/TypeScript/90.\351\253\230\347\272\247\347\261\273\345\236\213.md" "b/docs/Frontend/TypeScript/90.\351\253\230\347\272\247\347\261\273\345\236\213.md" index 9af93195..701e0128 100644 --- "a/docs/Frontend/TypeScript/90.\351\253\230\347\272\247\347\261\273\345\236\213.md" +++ "b/docs/Frontend/TypeScript/90.\351\253\230\347\272\247\347\261\273\345\236\213.md" @@ -142,3 +142,25 @@ function doStuff(q: A | B) { ``` 上面的例子中,`'x' in q`可以判断`q`是否为`A`类型。在`if`分支中,TypeScript 会将`q`的类型收窄为`A`,这样我们就可以放心地使用它的`x`属性了。 + +## 可辨识联合类型 + +interface Square { +kind: "square"; +size: number; +} + +interface Rectangle { +kind: "rectangle"; +width: number; +height: number; +} + +type Shape = Square | Rectangle; + +function area(s: Shape) { +switch (s.kind) { +case "square": return s.size _ s.size; +case "rectangle": return s.width _ s.height; +} +}