更新了一些定义和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();
|
||||
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) {
|
||||
|
|
|
|||
|
|
@ -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 {};
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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> &
|
||||
|
|
|
|||
45
test/test.ts
45
test/test.ts
|
|
@ -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,
|
||||
})
|
||||
Loading…
Reference in New Issue