FrankKai
FrankKai
### 数组类型的两种定义方式 #### Array Array后面加一个,内声明元素类型。 ```ts type Foo= Array; ``` ```ts interface Bar { baz: Array } ``` #### 类型[] 元素类型后面加一个[]。 ```ts type Foo = string[] ``` ```ts interface Bar...
### ts中的类型断言 TypeScript允许我们覆盖推断和分析出的视图类型为我们想要的任意方式,这种机制叫做类型断言(Type Assertion),类型断言会告诉编译器你比它更加知道具体是哪种类型,编译器不用再二次推断了。 类型断言往往是发生在编译器编译期间,用于提示编译器如何分析我们的代码。 - 语法 - 迁移js代码 - 类型断言的问题 - 指定event类型 - 慎用as any和as unknown - type与类型断言 #### 语法 ```js interface Foo { name: string, } type Any...
### 泛型函数与泛型接口 #### 泛型函数 想想一个场景,我们希望函数的输入与输出类型一致。 你可能会这样做,但这并不能保障输入与输出类型一致。 ```js function log(value: any):any { return value; } ``` 通过泛型函数可以精准实现:函数名后加一个``这里的T可以理解为泛型的名字。指定输入类型为T,返回值为T。 ```js function log(value: T):T { return value; } ``` 这是一个泛型函数实例,如何定义一种泛型函数类型呢? ```js type Log =...
### 如何理解as const? - 为了解决let赋值问题的,将一个mutable的变量改为readonly。 - 避免将类型推断为联合类型。 #### 为了解决let赋值问题的,将一个mutable的变量改为readonly。 ```js let x = "hello"; x = "world"; // 报错 ``` ##### 第一种方式 const ```js const x = "hello" ``` #####...
### declare global是什么意思? 是为了在全局命名空间做声明,比如为对象增加一个未定义的属性。 #### 为Window增加csrf的定义 ```js declare global { interface Window { csrf: string; } } ``` #### 为String增加fancyFormat的定义 ```js declare global { /*~ Here, declare things that go...
### 如何在TypeScript环境增加一个全局变量? 比如我们想要实现下面的效果,但是会报错Property '__INITIAL_DATA__' does not exist ```js window.__INITIAL_DATA__ = { "userID": "536891193569405430" }; const initialData = window.__INITIAL_DATA__; // 报错 ``` #### 使用类型断言 ```js const initialData = (window as any).__INITIAL_DATA__;...
### interface可以继承吗? 可以的。 ```js interface Base { foo: string; } interface Props extends Base { bar: string baz?: string } const test = (props: Props) => { console.log(props); } test({...
### typescript中的&是什么意思? 在react的dts文件中有这样一个定义。 ```js type PropsWithChildren = P & { children?: ReactNode }; ``` typescript中的&指的是交叉类型。 ```js interface ErrorHandling { success: boolean; error?: { message: string }; } interface ArtworksData {...
### interface与type的区别是什么? >An interface can be named in an extends or implements clause, but a type alias for an object type literal cannot. >An interface can have multiple merged declarations,...
### enum作为一种类型是什么意思? 在阅读pixi.js的源码中,发现有将enum作为了一种类型。 enum也可以作为一种类型去约束。 ```js // pixi/constants export enum BLEND_MODES { NORMAL = 0, ADD = 1, MULTIPLY = 2, SCREEN = 3, OVERLAY = 4, } export enum ANOTHER_ENUM...