更新了一些定义和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();
if (node.isDirty()) {
const operation = await node.composeOperation();
const projection = node.getProjection();
const projection = await node.getProjection();
value = (await this.applyOperation(node.getEntity(), value, operation, projection, path));
}
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中第二个参数的定义
*/
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 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 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 & FormedData, OakComponentInstanceProperties<ED, Cxt, AD, FD>, IS, true>) => string;
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>(
entity: T, value: Partial<ED[T]['Schema']> | Partial<ED[T]['Schema']>[] | undefined,
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> {
if (operation 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();
if (node.isDirty()) {
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));
}

View File

@ -955,7 +955,7 @@ export type MakeOakPage<
M,
OakPageProperties,
OakPageMethods<ED, T>,
OakPageData,
OakPageData & FormedData,
OakPageInstanceProperties<ED, Cxt, AD, FD>,
IS,
true
@ -983,7 +983,7 @@ export type MakeOakComponent<
M,
OakComponentProperties,
OakComponentMethods<ED, T>,
OakComponentData,
OakComponentData & FormedData,
OakComponentInstanceProperties<ED, Cxt, AD, FD>,
IS,
true

View File

@ -1,6 +1,7 @@
/// <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<
TData extends DataOption,
FormedData extends DataOption,
@ -8,7 +9,7 @@ declare namespace WechatMiniprogram.Component {
TMethod extends MethodOption,
TCustomInstanceProperty extends IAnyObject = {},
TIsPage extends boolean = false
> = Partial<Data<TData & FormedData>> &
> = Partial<Data<TData>> &
Partial<Property<TProperty>> &
Partial<Method<TMethod, TIsPage>> &
Partial<OtherOption> &

View File

@ -1,22 +1,33 @@
import { OakException, OakUserException } from 'oak-domain/lib/types';
const e = new OakUserException();
console.log(e instanceof OakException);
type Tessst = {
name: string;
no: number;
friends?: Array<string>;
type OakPageData = {
oakFullpath: string;
oakExecuting: boolean;
oakFocused: object;
oakDirty: boolean;
oakError: {
type: 'warning' | 'error' | 'success' | 'primary';
msg: string;
};
oakLegalActions: string[],
};
type Eliminate<K extends keyof Tessst = never> = Tessst & {
[k in K]: never;
type A = {
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'>;
type Deduce<T extends Record<string, any>> = {
[K in keyof T]: T[K] extends Array<any> ? string : number;
};
type DD = Deduce<Tessst>;
tt({
oakExecuting: false,
})