mustard-app
Version:
个人前端微应用建设中。。。
64 lines (53 loc) • 1.74 kB
text/typescript
import { State } from '../proxy/proxyHistory';
import { APPStAtUSCNKEYS, IAppStatusCN } from '../typings';
type Tfunction = (...arg:unknown[])=>unknown;
export function isString (value:unknown):value is string {
return typeof value === 'string';
}
export function isNumber (value:unknown):value is number {
return typeof value === 'number';
}
export function isBoolean (value:unknown):value is boolean {
return typeof value === 'boolean';
}
export function isFunction (value:unknown):value is Tfunction {
return value instanceof Function;
}
export function isObject (value:unknown): value is ObjectConstructor {
return value instanceof Object;
}
export function isURL (value:unknown): value is URL {
return value instanceof URL;
}
/**
* 是否是子应用的state
* @param value
* @returns
*/
export function isMustardState (value: unknown):value is State {
return (value as State)?.isMustard === 'MustardApp';
}
/**
* 是否是生命周期的key
* @param value
* @returns
*/
export function isIAppStatusKey (value: unknown):value is IAppStatusCN {
return APPStAtUSCNKEYS.includes(value as IAppStatusCN);
}
/**
* 是否是远程类型资源
* @param dom
* @returns boolean
*/
export function isRemotezElement (dom: Element):dom is HTMLImageElement|HTMLVideoElement|HTMLAudioElement|HTMLSourceElement {
return dom instanceof HTMLImageElement || dom instanceof HTMLVideoElement || dom instanceof HTMLAudioElement || dom instanceof HTMLSourceElement;
}
/**
* 是否是相对地址
* @param src
* @returns boolean
*/
export function isRelativePath (src: string = '') {
return /^(\.){0,2}\//.test(src);
}