用了很久的 typescript,用了但感觉又没完全用。因为很多 typescript 的特性没有被使用,查看之前写的代码满屏的 any,这样就容易导致很多 bug,也没有发挥出 typescript 真正的“类型”威力。本文总结了一些使用 typescript 的小技巧,以后使用 typescript 时可以运用起来。
废话不多说,直接上代码。
当希望传 user 参数时,不传 flag,传 para 时,传 flag。就可以这样写:
type PersonPartial = Partial<Person>;
type PersonReadonly = Readonly<Person>;
type PersonNullable = Nullable<Person>;
type PersonPartial = {
name?: string | undefined;
age?: number | undefined;
type PersonReadonly = {
readonly name: string;
readonly age: number;
type PersonNullable = {
name: string |
null
;
age: number |
null
;
interface Props {
a?: number;
b?: string;
const obj: Props = { a: 5 };
const obj2: Required<Props> = { a: 5 };
printAnimalAbilities(animal);
animal.flags |= AnimalFlags.HasClaws | AnimalFlags.CanFly;
printAnimalAbilities(animal);
declare
function
listToTree<T extends string =
'children'
>(list: Item[], options: Options<T>): TreeItem<T>[];
listToTree(arr, { childrenKey:
'childrenList'
}).forEach(i => i.childrenList)
type ElementOf<T> = T extends Array<infer E> ? E : never;
type TTuple = [string, number];
type ToUnion = ElementOf<TTuple>;
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
type Result = UnionToIntersection<T1 | T2>;
typescript 关于类型限制还是非常强大的,由于
短链接
文章有限,还有其他类型比如联合类型,交叉类型等读者可自行翻阅资料查看。刚开始接触范型以及其各种组合会感觉不熟练,接下来在项目中会慢慢应用,争取将 bug 降至最低限度。
尘世中的小技术