更新了一些定义和node中的小bug
This commit is contained in:
parent
7677a5eb0d
commit
35228c1a3e
|
|
@ -749,7 +749,7 @@ class RunningNode extends Feature_1.Feature {
|
||||||
let value = await node.getValue();
|
let value = await node.getValue();
|
||||||
if (node.isDirty()) {
|
if (node.isDirty()) {
|
||||||
const operation = await node.composeOperation();
|
const operation = await node.composeOperation();
|
||||||
const projection = node.getProjection();
|
const projection = await node.getProjection();
|
||||||
value = (await this.applyOperation(node.getEntity(), value, operation, projection, path));
|
value = (await this.applyOperation(node.getEntity(), value, operation, projection, path));
|
||||||
}
|
}
|
||||||
if (value instanceof Array) {
|
if (value instanceof Array) {
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,6 @@ export declare function initialize<ED extends EntityDict, Cxt extends Context<ED
|
||||||
* 根据WechatMiniprogram.Component.Options写的,规定OakPage和OakComponent中第二个参数的定义
|
* 根据WechatMiniprogram.Component.Options写的,规定OakPage和OakComponent中第二个参数的定义
|
||||||
*/
|
*/
|
||||||
declare type OakWechatMpOptions<TData extends WechatMiniprogram.Component.DataOption, TProperty extends WechatMiniprogram.Component.PropertyOption, TMethod extends WechatMiniprogram.Component.MethodOption, InherentProperties extends WechatMiniprogram.Component.PropertyOption, InherentMethods extends WechatMiniprogram.Component.MethodOption, InherentData extends WechatMiniprogram.Component.DataOption, InherentInstanceProperty extends WechatMiniprogram.IAnyObject, TCustomInstanceProperty extends WechatMiniprogram.IAnyObject = {}, TIsPage extends boolean = false> = Partial<TData> & Partial<WechatMiniprogram.Component.Property<TProperty>> & Partial<WechatMiniprogram.Component.Method<TMethod, TIsPage>> & Partial<WechatMiniprogram.Component.OtherOption> & Partial<WechatMiniprogram.Component.Lifetimes> & ThisType<WechatMiniprogram.Component.Instance<TData & InherentData, TProperty & InherentProperties, TMethod & InherentMethods, TCustomInstanceProperty & InherentInstanceProperty, TIsPage>>;
|
declare type OakWechatMpOptions<TData extends WechatMiniprogram.Component.DataOption, TProperty extends WechatMiniprogram.Component.PropertyOption, TMethod extends WechatMiniprogram.Component.MethodOption, InherentProperties extends WechatMiniprogram.Component.PropertyOption, InherentMethods extends WechatMiniprogram.Component.MethodOption, InherentData extends WechatMiniprogram.Component.DataOption, InherentInstanceProperty extends WechatMiniprogram.IAnyObject, TCustomInstanceProperty extends WechatMiniprogram.IAnyObject = {}, TIsPage extends boolean = false> = Partial<TData> & Partial<WechatMiniprogram.Component.Property<TProperty>> & Partial<WechatMiniprogram.Component.Method<TMethod, TIsPage>> & Partial<WechatMiniprogram.Component.OtherOption> & Partial<WechatMiniprogram.Component.Lifetimes> & ThisType<WechatMiniprogram.Component.Instance<TData & InherentData, TProperty & InherentProperties, TMethod & InherentMethods, TCustomInstanceProperty & InherentInstanceProperty, TIsPage>>;
|
||||||
export declare type MakeOakPage<ED extends EntityDict, Cxt extends Context<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature<ED, Cxt, AD>>> = <T extends keyof ED, D extends WechatMiniprogram.Component.DataOption, P extends WechatMiniprogram.Component.PropertyOption, M extends WechatMiniprogram.Component.MethodOption, Proj extends ED[T]['Selection']['data'], IS extends WechatMiniprogram.IAnyObject = {}, FormedData extends WechatMiniprogram.Component.DataOption = {}>(options: OakPageOption<ED, T, Cxt, AD, FD, Proj, FormedData>, componentOptions: OakWechatMpOptions<D, P, M, OakPageProperties, OakPageMethods<ED, T>, OakPageData, OakPageInstanceProperties<ED, Cxt, AD, FD>, IS, true>) => string;
|
export declare type MakeOakPage<ED extends EntityDict, Cxt extends Context<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature<ED, Cxt, AD>>> = <T extends keyof ED, D extends WechatMiniprogram.Component.DataOption, P extends WechatMiniprogram.Component.PropertyOption, M extends WechatMiniprogram.Component.MethodOption, Proj extends ED[T]['Selection']['data'], IS extends WechatMiniprogram.IAnyObject = {}, FormedData extends WechatMiniprogram.Component.DataOption = {}>(options: OakPageOption<ED, T, Cxt, AD, FD, Proj, FormedData>, componentOptions: OakWechatMpOptions<D, P, M, OakPageProperties, OakPageMethods<ED, T>, OakPageData & FormedData, OakPageInstanceProperties<ED, Cxt, AD, FD>, IS, true>) => string;
|
||||||
export declare type MakeOakComponent<ED extends EntityDict, Cxt extends Context<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature<ED, Cxt, AD>>> = <T extends keyof ED, D extends WechatMiniprogram.Component.DataOption, P extends WechatMiniprogram.Component.PropertyOption, M extends WechatMiniprogram.Component.MethodOption, Proj extends ED[T]['Selection']['data'], IS extends WechatMiniprogram.IAnyObject = {}, FormedData extends WechatMiniprogram.Component.DataOption = {}>(options: OakComponentOption<ED, T, Cxt, AD, FD, Proj, FormedData>, componentOptions: OakWechatMpOptions<D, P, M, OakComponentProperties, OakComponentMethods<ED, T>, OakComponentData, OakComponentInstanceProperties<ED, Cxt, AD, FD>, IS, true>) => string;
|
export declare type MakeOakComponent<ED extends EntityDict, Cxt extends Context<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature<ED, Cxt, AD>>> = <T extends keyof ED, D extends WechatMiniprogram.Component.DataOption, P extends WechatMiniprogram.Component.PropertyOption, M extends WechatMiniprogram.Component.MethodOption, Proj extends ED[T]['Selection']['data'], IS extends WechatMiniprogram.IAnyObject = {}, FormedData extends WechatMiniprogram.Component.DataOption = {}>(options: OakComponentOption<ED, T, Cxt, AD, FD, Proj, FormedData>, componentOptions: OakWechatMpOptions<D, P, M, OakComponentProperties, OakComponentMethods<ED, T>, OakComponentData & FormedData, OakComponentInstanceProperties<ED, Cxt, AD, FD>, IS, true>) => string;
|
||||||
export {};
|
export {};
|
||||||
|
|
|
||||||
|
|
@ -689,7 +689,7 @@ export class RunningNode<ED extends EntityDict, Cxt extends Context<ED>, AD exte
|
||||||
private async applyOperation<T extends keyof ED>(
|
private async applyOperation<T extends keyof ED>(
|
||||||
entity: T, value: Partial<ED[T]['Schema']> | Partial<ED[T]['Schema']>[] | undefined,
|
entity: T, value: Partial<ED[T]['Schema']> | Partial<ED[T]['Schema']>[] | undefined,
|
||||||
operation: DeduceOperation<ED[T]['Schema']> | DeduceOperation<ED[T]['Schema']>[],
|
operation: DeduceOperation<ED[T]['Schema']> | DeduceOperation<ED[T]['Schema']>[],
|
||||||
projection: DeduceSelection<ED[T]['Schema']>['data'],
|
projection: ED[T]['Selection']['data'],
|
||||||
scene: string): Promise<Partial<ED[T]['Schema']> | Partial<ED[T]['Schema']>[] | undefined> {
|
scene: string): Promise<Partial<ED[T]['Schema']> | Partial<ED[T]['Schema']>[] | undefined> {
|
||||||
if (operation instanceof Array) {
|
if (operation instanceof Array) {
|
||||||
assert(value instanceof Array);
|
assert(value instanceof Array);
|
||||||
|
|
@ -853,7 +853,7 @@ export class RunningNode<ED extends EntityDict, Cxt extends Context<ED>, AD exte
|
||||||
let value = await node.getValue();
|
let value = await node.getValue();
|
||||||
if (node.isDirty()) {
|
if (node.isDirty()) {
|
||||||
const operation = await node.composeOperation();
|
const operation = await node.composeOperation();
|
||||||
const projection = node.getProjection();
|
const projection = await node.getProjection();
|
||||||
value = (await this.applyOperation(node.getEntity(), value, operation!, projection as any, path));
|
value = (await this.applyOperation(node.getEntity(), value, operation!, projection as any, path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -955,7 +955,7 @@ export type MakeOakPage<
|
||||||
M,
|
M,
|
||||||
OakPageProperties,
|
OakPageProperties,
|
||||||
OakPageMethods<ED, T>,
|
OakPageMethods<ED, T>,
|
||||||
OakPageData,
|
OakPageData & FormedData,
|
||||||
OakPageInstanceProperties<ED, Cxt, AD, FD>,
|
OakPageInstanceProperties<ED, Cxt, AD, FD>,
|
||||||
IS,
|
IS,
|
||||||
true
|
true
|
||||||
|
|
@ -983,7 +983,7 @@ export type MakeOakComponent<
|
||||||
M,
|
M,
|
||||||
OakComponentProperties,
|
OakComponentProperties,
|
||||||
OakComponentMethods<ED, T>,
|
OakComponentMethods<ED, T>,
|
||||||
OakComponentData,
|
OakComponentData & FormedData,
|
||||||
OakComponentInstanceProperties<ED, Cxt, AD, FD>,
|
OakComponentInstanceProperties<ED, Cxt, AD, FD>,
|
||||||
IS,
|
IS,
|
||||||
true
|
true
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
/// <reference path="../../node_modules/@types/wechat-miniprogram/lib.wx.component.d.ts" />
|
/// <reference path="../../node_modules/@types/wechat-miniprogram/lib.wx.component.d.ts" />
|
||||||
|
|
||||||
declare namespace WechatMiniprogram.Component {
|
// 这样写就是不行,必须要写到platform/wechatMp/index.ts中去,不知道为什么……
|
||||||
|
declare namespace OakMiniprogram {
|
||||||
type OakOptions<
|
type OakOptions<
|
||||||
TData extends DataOption,
|
TData extends DataOption,
|
||||||
FormedData extends DataOption,
|
FormedData extends DataOption,
|
||||||
|
|
@ -8,7 +9,7 @@ declare namespace WechatMiniprogram.Component {
|
||||||
TMethod extends MethodOption,
|
TMethod extends MethodOption,
|
||||||
TCustomInstanceProperty extends IAnyObject = {},
|
TCustomInstanceProperty extends IAnyObject = {},
|
||||||
TIsPage extends boolean = false
|
TIsPage extends boolean = false
|
||||||
> = Partial<Data<TData & FormedData>> &
|
> = Partial<Data<TData>> &
|
||||||
Partial<Property<TProperty>> &
|
Partial<Property<TProperty>> &
|
||||||
Partial<Method<TMethod, TIsPage>> &
|
Partial<Method<TMethod, TIsPage>> &
|
||||||
Partial<OtherOption> &
|
Partial<OtherOption> &
|
||||||
|
|
|
||||||
45
test/test.ts
45
test/test.ts
|
|
@ -1,22 +1,33 @@
|
||||||
import { OakException, OakUserException } from 'oak-domain/lib/types';
|
|
||||||
|
|
||||||
const e = new OakUserException();
|
type OakPageData = {
|
||||||
|
oakFullpath: string;
|
||||||
console.log(e instanceof OakException);
|
oakExecuting: boolean;
|
||||||
type Tessst = {
|
oakFocused: object;
|
||||||
name: string;
|
oakDirty: boolean;
|
||||||
no: number;
|
oakError: {
|
||||||
friends?: Array<string>;
|
type: 'warning' | 'error' | 'success' | 'primary';
|
||||||
|
msg: string;
|
||||||
|
};
|
||||||
|
oakLegalActions: string[],
|
||||||
};
|
};
|
||||||
|
|
||||||
type Eliminate<K extends keyof Tessst = never> = Tessst & {
|
type A = {
|
||||||
[k in K]: never;
|
name: string;
|
||||||
|
method: Function,
|
||||||
|
} & ThisType<{
|
||||||
|
data: OakPageData
|
||||||
|
}>;
|
||||||
|
|
||||||
|
const a: A = {
|
||||||
|
name: 'xc',
|
||||||
|
method() {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function tt<FormedData extends Record<string, any>>(p: Partial<OakPageData & FormedData>) {
|
||||||
|
console.log(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
type TT = Eliminate<'name'>;
|
tt({
|
||||||
|
oakExecuting: false,
|
||||||
type Deduce<T extends Record<string, any>> = {
|
})
|
||||||
[K in keyof T]: T[K] extends Array<any> ? string : number;
|
|
||||||
};
|
|
||||||
|
|
||||||
type DD = Deduce<Tessst>;
|
|
||||||
Loading…
Reference in New Issue