You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functionisAxiosError(error: any): error is AxiosError{returnerror.isAxiosError}if(isAxiosError(err)){code=`Axios-${err.code}`}
在 GraphQL 的源码中,有很多诸如此类的用法,用以标识类型
exportfunctionisType(type: any): type is GraphQLType;exportfunctionisScalarType(type: any): type is GraphQLScalarType;exportfunctionisObjectType(type: any): type is GraphQLObjectType;exportfunctionisInterfaceType(type: any): type is GraphQLInterfaceType;
01 keyof
keyof
与Object.keys
略有相似,只不过keyof
取interface
的键。假设有一个
object
如下所示,我们需要使用typescript
实现一个get
函数来获取它的属性值我们刚开始可能会这么写,不过它有很多缺点
这时可以使用
keyof
来加强get
函数的类型功能,有兴趣的同学可以看看_.get
的 type 标记以及实现02 Required & Partial & Pick
既然了解了
keyof
,可以使用它对属性做一些扩展, 如实现Partial
和Pick
,Pick
一般用在_.pick
中03 Condition Type
类似于 js 中的
?:
运算符,可以使用它扩展一些基本类型04 never & Exclude & Omit
官方文档对
never
的描述如下结合
never
与conditional type
可以推出很多有意思而且实用的类型,比如Omit
结合
Exclude
可以推出Omit
的写法05 typeof
顾名思义,
typeof
代表取某个值的 type,可以从以下示例来展示他们的用法在一个典型的服务端项目中,我们经常需要把一些工具塞到
context
中,如config,logger,db models, utils 等,此时就使用到typeof
。06 is
在此之前,先看一个
koa
的错误处理流程,以下是对error
进行集中处理,并且标识code
的过程在
err.code
处,会编译出错,提示Property 'code' does not exist on type 'Error'.ts(2339)
。此时可以使用
as AxiosError
或者as any
来避免报错,不过强制类型转换也不够友好此时可以使用
is
来判定值的类型在
GraphQL
的源码中,有很多诸如此类的用法,用以标识类型07 interface & type
interface
与type
的区别是什么?可以参考以下stackoverflow
的问题https://stackoverflow.com/questions/37233735/typescript-interfaces-vs-types
一般来说,
interface
与type
区别很小,比如以下两种写法差不多其中
interface
可以如下合并多个,而type
只能使用&
类进行连接。08 Record & Dictionary & Many
这几个语法糖是从
lodash
的 types 源码中学到的,平时工作中的使用频率还挺高。09 使用 const enum 维护常量表
相比使用字面量对象维护常量,
const enum
可以提供更安全的类型检查10 VS Code Tips & Typescript Command
使用 VS Code 有时会出现,使用
tsc
编译时产生的问题与vs code
提示的问题不一致找到项目右下角的
Typescript
字样,右侧显示它的版本号,可以点击选择Use Workspace Version
,它表示与项目依赖的 typescript 版本一直。或者编辑
.vs-code/settings.json
11 Typescript Roadmap
最后一条也是最重要的一条,翻阅
Roadmap
,了解ts
的一些新的特性与 bug 修复情况。Typescript Roadmap
参考
The text was updated successfully, but these errors were encountered: