cgreact-core
Version:
未发表!CGReact前端Web研发框架核心包
62 lines (53 loc) • 4.99 kB
TypeScript
/*CGReact可导入模块声明*/
declare var JSSExport: JSS;
declare var StringExport: string;
declare module "*.css" {export default StringExport}
declare module "*.scss" {export default StringExport}
declare module "*.jpg" {export default StringExport}
declare module "*.png" {export default StringExport}
declare module "*.svg" {export default StringExport}
declare module "*.bmp" {export default StringExport}
/*CGReactApplication注入的全局方法声明*/
declare interface DateConstructor {fromString(str: string): Date} //原生Date类型增加fromString构造方法
declare interface ObjectConstructor {type(obj: any): "undefined" | "object" | "boolean" | "number" | "string" | "function" | "symbol" | "bigint" | "array"}//原生object注入type检测方法
declare interface Set<T> {addAll(news: T[]): Set<T>} // 原生Set类型增加addAll方法
declare interface FormData {append(name: string, value: string | number | Array<any> | Blob, fileName?: string): FormData;} //修改FormData原生的append方法,增加返回值可以链式调用
declare interface String {hashCode(): number} //string添加计算hash的方法
declare var URI: {
new(url: string): URL; //支持new构造
(url: string): URL; //支持直接做函数转化
};//创造一个URI类型用来处理URI的相关操作
declare interface Date//原生Date类型增加相关方法
{
isValid(): boolean;
getMon(): number;
getQuarter(): number;
format(formt: string): string;
} //给JSX的type增加一个CGReactModuleType语法参数
/* 常用数据类型声明*/
type NamedColor = | "aliceblue" | "antiquewhite" | "aqua" | "aquamarine" | "azure" | "beige" | "bisque" | "black" | "blanchedalmond" | "blue" | "blueviolet" | "brown" | "burlywood" | "cadetblue" | "chartreuse" | "chocolate" | "coral" | "cornflowerblue" | "cornsilk" | "crimson" | "cyan" | "darkblue" | "darkcyan" | "darkgoldenrod" | "darkgray" | "darkgreen" | "darkgrey" | "darkkhaki" | "darkmagenta" | "darkolivegreen" | "darkorange" | "darkorchid" | "darkred" | "darksalmon" | "darkseagreen" | "darkslateblue" | "darkslategray" | "darkslategrey" | "darkturquoise" | "darkviolet" | "deeppink" | "deepskyblue" | "dimgray" | "dimgrey" | "dodgerblue" | "firebrick" | "floralwhite" | "forestgreen" | "fuchsia" | "gainsboro" | "ghostwhite" | "gold" | "goldenrod" | "gray" | "green" | "greenyellow" | "grey" | "honeydew" | "hotpink" | "indianred" | "indigo" | "ivory" | "khaki" | "lavender" | "lavenderblush" | "lawngreen" | "lemonchiffon" | "lightblue" | "lightcoral" | "lightcyan" | "lightgoldenrodyellow" | "lightgray" | "lightgreen" | "lightgrey" | "lightpink" | "lightsalmon" | "lightseagreen" | "lightskyblue" | "lightslategray" | "lightslategrey" | "lightsteelblue" | "lightyellow" | "lime" | "limegreen" | "linen" | "magenta" | "maroon" | "mediumaquamarine" | "mediumblue" | "mediumorchid" | "mediumpurple" | "mediumseagreen" | "mediumslateblue" | "mediumspringgreen" | "mediumturquoise" | "mediumvioletred" | "midnightblue" | "mintcream" | "mistyrose" | "moccasin" | "navajowhite" | "navy" | "oldlace" | "olive" | "olivedrab" | "orange" | "orangered" | "orchid" | "palegoldenrod" | "palegreen" | "paleturquoise" | "palevioletred" | "papayawhip" | "peachpuff" | "peru" | "pink" | "plum" | "powderblue" | "purple" | "rebeccapurple" | "red" | "rosybrown" | "royalblue" | "saddlebrown" | "salmon" | "sandybrown" | "seagreen" | "seashell" | "sienna" | "silver" | "skyblue" | "slateblue" | "slategray" | "slategrey" | "snow" | "springgreen" | "steelblue" | "tan" | "teal" | "thistle" | "tomato" | "transparent" | "turquoise" | "violet" | "wheat" | "white" | "whitesmoke" | "yellow" | "yellowgreen";
/* CGReact数据类型*/
declare type StyleKey = string; //允许用户在代码中自行复写
declare type TableKey = string; //允许用户在代码中自行复写
declare type PageState = { [key: string]: any } //PaageState不想import
declare type PageProp = { [key: string]: any } //PaageState不想import
declare type CompState = { [key: string]: any } //CompState不想import
declare type JSS<KEY extends string = StyleKey> = {
[K in KEY]: React.CSSProperties
} //JSS样式类型
declare type JSSKeyMap<KEY extends string = StyleKey> = {
[K in KEY]: string
}// 给元素类型一个JSX的别名
declare interface JSX extends React.ReactElement {type: ((props) => JSX) & { CGReactModuleType: string }}
/** lib.es5.d.ts定义的泛型约束函数Readonly没有递归不够彻底,object里嵌套的object不能readonly,我们定义自己的Readonly*/
declare type DeepReadonly<T extends object> = {
readonly [key in keyof T]: T[key] extends object ? DeepReadonly<T[key]> : T[key];
}
/** 让指定类型中所有的键都变为可选*/
declare type FreeNecessary<T extends object> = {
[key in keyof T]?: T[key]
}
/** 获得类型的构造类型*/
declare type ClassOf<T> = {
new(...props: any): T //构造函数返回了T
}