Options
All
  • Public
  • Public/Protected
  • All
Menu

Module func/flag

flag.ts

remarks

使用2的n次幂作为flag的标识,可以快速、高效的进行remove、hasALLFlag hasAnyFlag等判断操作

example

typescript中针对SymbolFlags的标识

export enum SymbolFlags {
     None = 0,
     FunctionScopedVariable = 1,
     BlockScopedVariable = 2,
     Property = 4,
     EnumMember = 8,
     Function = 16,
     Class = 32,
     Interface = 64,
     ConstEnum = 128,
     RegularEnum = 256,
     ValueModule = 512,
     NamespaceModule = 1024,
     TypeLiteral = 2048,
     ObjectLiteral = 4096,
     Method = 8192,
     Constructor = 16384,
     GetAccessor = 32768,
     SetAccessor = 65536,
};

Index

Functions

getEnumFlags

0.0.55 provide
  • getEnumFlags<T>(flags: T): T[]
  • 将一组 flags 进行拆分

    example

    基本用法

    import { func } from 'onex-utils';
    import ts from 'typescript';
    
    const result = func.getEnumFlags(ts.SymbolFlags.Enum | ts.SymbolFlags.Alias);
    // result = [ts.SymbolFlags.Enum, ts.SymbolFlags.Alias];
    

    Type parameters

    • T: number

    Parameters

    • flags: T

      flags 集合

    Returns T[]

    枚举 flags 集合

hasAllFlags

0.0.55 provide
  • hasAllFlags(flags: number, check: number): boolean
  • 判断flags中是包含全部某些特定的flags

    example

    基本用法

    import { func } from 'onex-utils';
    import ts from 'typescript';
    
    const result = func.hasAllFlags(ts.SymbolFlags.Enum | ts.SymbolFlags.Alias, ts.SymbolFlags.Alias);
    // result = true;
    

    Parameters

    • flags: number

      集合的flags

    • check: number

      需要判断是否有无的flags

    Returns boolean

    是否包含所有的

hasAnyFlag

0.0.55 provide
  • hasAnyFlag(flags: number, check: number): boolean
  • 判断flags中是包含任意指定的flags

    example

    基本用法

    import { func } from 'onex-utils';
    import ts from 'typescript';
    
    const result = func.hasAnyFlag(ts.SymbolFlags.Enum | ts.SymbolFlags.Alias, ts.SymbolFlags.Alias);
    // result = true;
    

    Parameters

    • flags: number

      集合的flags

    • check: number

      需要判断是否有无的flags

    Returns boolean

    是否包含任意一个

removeFlag

0.0.55 provide
  • removeFlag<T>(flag: T, remove: T & {}): T
  • 移除flags的某个flag

    example

    基本用法

    import { func } from 'onex-utils';
    import ts from 'typescript';
    
    const result = func.removeFlag(ts.SymbolFlags.Enum | ts.SymbolFlags.Alias, ts.SymbolFlags.Alias);
    // result = ts.SymbolFlags.Enum;
    

    Type parameters

    • T: number

    Parameters

    • flag: T

      集合的flags

    • remove: T & {}

      需要remote

    Returns T

    移除指定remove之后的flag