更新了一些定义和node中的小bug

This commit is contained in:
Xu Chang 2022-05-12 20:42:20 +08:00
parent 7677a5eb0d
commit 35228c1a3e
6 changed files with 38 additions and 26 deletions

View File

@ -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) {

View File

@ -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 {};

View File

@ -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));
} }

View File

@ -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

View File

@ -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> &

View File

@ -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>;