annil 1.12.0-alpha.5 → 1.12.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/api/ChunkComponent/ChunkMethods/ChunkMethodsOption.d.ts +2 -2
- package/dist/api/ChunkComponent/ChunklEvents/ChunkEventsOption.d.ts +1 -1
- package/dist/api/ChunkComponent/index.d.ts +1 -1
- package/dist/api/wxSugar.d.ts +9 -4
- package/dist/api/wxSugar.js.map +1 -1
- package/dist/thirdLib/wm/baseEvents.d.ts +2 -3
- package/dist/utils/_utils.d.ts +2 -1
- package/dist/utils/_utils.js +2 -1
- package/dist/utils/_utils.js.map +1 -1
- package/dist/utils/typeEqual.d.ts +2 -0
- package/dist/utils/typeEqual.js +4 -0
- package/dist/utils/typeEqual.js.map +1 -0
- package/package.json +1 -1
- package/src/api/ChunkComponent/ChunkMethods/ChunkMethodsOption.ts +7 -2
- package/src/api/ChunkComponent/ChunkWatch/test/error.test.ts +4 -2
- package/src/api/ChunkComponent/ChunklEvents/ChunkEventsOption.ts +6 -1
- package/src/api/ChunkComponent/ChunklEvents/test/normal.test.ts +19 -2
- package/src/api/ChunkComponent/index.ts +2 -2
- package/src/api/CustomComponent/CustomEvents/test/normal.test.ts +33 -0
- package/src/api/wxSugar.ts +6 -6
- package/src/thirdLib/wm/baseEvents.ts +3 -3
- package/src/utils/_utils.ts +2 -2
- package/src/utils/typeEqual.ts +16 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@
|
|
|
4
4
|
|
|
5
5
|
* 解决DetailedType不接收接口类型的错误 ([ae8acbf](https://github.com/missannil/annil/commit/ae8acbfc2e62f99db565c448ad9253aa549e78bb))
|
|
6
6
|
|
|
7
|
+
## [1.12.0-alpha.6](https://github.com/missannil/annil/compare/v1.12.0-alpha.5...v1.12.0-alpha.6) (2025-04-09)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* 增加导出typeEqual函数用于类型校验 ([e6b9ffc](https://github.com/missannil/annil/commit/e6b9ffc67b13572b47f7457d2cf9308be70fb7cc))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* chunkComponent events字段和methods字段类型前缀错误 ([#239](https://github.com/missannil/annil/issues/239)) ([e6b9ffc](https://github.com/missannil/annil/commit/e6b9ffc67b13572b47f7457d2cf9308be70fb7cc))
|
|
18
|
+
|
|
7
19
|
## [1.12.0-alpha.5](https://github.com/missannil/annil/compare/v1.12.0-alpha.4...v1.12.0-alpha.5) (2025-04-08)
|
|
8
20
|
|
|
9
21
|
|
|
@@ -2,9 +2,9 @@ import type { G } from "hry-types";
|
|
|
2
2
|
import type { IfExtends } from "hry-types/src/Any/_api";
|
|
3
3
|
import type { Validators } from "../../../types/Validators";
|
|
4
4
|
import type { MethodsConstraint } from "../../RootComponent/Methods/MethodsConstraint";
|
|
5
|
-
export type ChunkMethodsOption<TMethods extends MethodsConstraint, TDuplicateKeys extends PropertyKey,
|
|
5
|
+
export type ChunkMethodsOption<TMethods extends MethodsConstraint, TDuplicateKeys extends PropertyKey, Prefix extends string> = {
|
|
6
6
|
methods?: TMethods & Validators<[
|
|
7
7
|
G.DuplicateFieldValidator<TMethods, TDuplicateKeys, "字段重复">,
|
|
8
|
-
IfExtends<MethodsConstraint, TMethods, unknown, G.KeyValidator<TMethods,
|
|
8
|
+
IfExtends<MethodsConstraint, TMethods, unknown, IfExtends<Prefix, "", unknown, G.KeyValidator<TMethods, `${Prefix}_${string}`, "前缀错误">>>
|
|
9
9
|
]>;
|
|
10
10
|
};
|
|
@@ -5,6 +5,6 @@ import type { ChunkEventsConstraint } from "./ChunkEventsConstraint";
|
|
|
5
5
|
export type ChunkEventsOption<TEvents extends ChunkEventsConstraint, TDuplicateKeys extends PropertyKey, Prefix extends string> = {
|
|
6
6
|
events?: TEvents & Validators<[
|
|
7
7
|
G.DuplicateFieldValidator<TEvents, TDuplicateKeys, "字段重复">,
|
|
8
|
-
IfExtends<ChunkEventsConstraint, TEvents, unknown, G.KeyValidator<TEvents, Prefix
|
|
8
|
+
IfExtends<ChunkEventsConstraint, TEvents, unknown, IfExtends<Prefix, "", unknown, G.KeyValidator<TEvents, `${Prefix}_${string}`, "前缀错误">>>
|
|
9
9
|
]>;
|
|
10
10
|
};
|
|
@@ -18,7 +18,7 @@ import type { ChunkEventsOption } from "./ChunklEvents/ChunkEventsOption";
|
|
|
18
18
|
import type { ChunkMethodsOption } from "./ChunkMethods/ChunkMethodsOption";
|
|
19
19
|
import type { ChunkStoreConstraint } from "./ChunkStore/ChunkStoreConstraint";
|
|
20
20
|
import type { ChunkStoreOption } from "./ChunkStore/ChunkStoreOption";
|
|
21
|
-
type ChunkComponentOptions<TIsPage extends boolean, Prefix extends string, RootDatas extends object, TEvents extends ChunkEventsConstraint, TData extends object, TStore extends ChunkStoreConstraint, StoreDoc extends object, TComputed extends ChunkComputedConstraint, ComputedDoc extends object, RootMethods extends object, RootEvents extends object, TMethods extends MethodsConstraint, EventsDoc extends object, PropertiesDoc extends object> = ChunkDataOption<TData, keyof (RootDatas & IInjectAllData), Prefix> & ChunkStoreOption<TStore, keyof (TData & RootDatas & IInjectAllData), Prefix> & ChunkComputedOption<TComputed, keyof (TData & StoreDoc & RootDatas & IInjectAllData), Prefix> & ChunkEventsOption<TEvents, keyof (RootMethods & RootEvents & IInjectMethods),
|
|
21
|
+
type ChunkComponentOptions<TIsPage extends boolean, Prefix extends string, RootDatas extends object, TEvents extends ChunkEventsConstraint, TData extends object, TStore extends ChunkStoreConstraint, StoreDoc extends object, TComputed extends ChunkComputedConstraint, ComputedDoc extends object, RootMethods extends object, RootEvents extends object, TMethods extends MethodsConstraint, EventsDoc extends object, PropertiesDoc extends object> = ChunkDataOption<TData, keyof (RootDatas & IInjectAllData), Prefix> & ChunkStoreOption<TStore, keyof (TData & RootDatas & IInjectAllData), Prefix> & ChunkComputedOption<TComputed, keyof (TData & StoreDoc & RootDatas & IInjectAllData), Prefix> & ChunkEventsOption<TEvents, keyof (RootMethods & RootEvents & IInjectMethods), Prefix> & ChunkMethodsOption<TMethods, keyof (RootMethods & RootEvents & EventsDoc & IInjectMethods), Prefix> & ThisType<RootComponentInstance<TIsPage, TMethods & RootMethods, TData, TData & StoreDoc & ComputedDoc & RootDatas & IInjectAllData, {}, StoreDoc>> & PageLifetimesOption<TIsPage, PropertiesDoc> & LifetimesOption & WatchOption<ComputedDoc & Required<RootDatas> & TData & StoreDoc & IInjectStore> & Partial<Omit<WMCompOtherOption, "pageLifetimes" | "definitionFilter" | "observers">> & ObserversOption<ComputedDoc & Required<RootDatas> & TData & StoreDoc & IInjectStore>;
|
|
22
22
|
type ChunkComponentConstructor<RootDoc extends RootComponentType, Prefix extends string, IsPage extends boolean = RootDoc["isPage"] extends true ? true : false, RootDatas extends object = Required<RootDoc["properties"]> & RootDoc["data"] & RootDoc["computed"] & RootDoc["store"], RootMethods extends object = RootDoc["methods"] & {}, RootEvents extends object = RootDoc["events"] & {}> = <TEvents extends ChunkEventsConstraint, TMethods extends MethodsConstraint = {}, TData extends object = {}, TStore extends ChunkStoreConstraint = {}, StoreDoc extends object = GetStoreDoc<TStore>, TComputed extends ChunkComputedConstraint = {}, ComputedDoc extends object = GetComputedDoc<TComputed>, EventsDoc extends object = IfExtends<ChunkEventsConstraint, TEvents, {}, TEvents>, PropertiesDoc extends object = RootDoc["properties"] & {}>(options: ChunkComponentOptions<IsPage, Prefix, RootDatas, TEvents, TData, TStore, StoreDoc, TComputed, ComputedDoc, RootMethods, RootEvents, TMethods, EventsDoc, PropertiesDoc>) => never;
|
|
23
23
|
export declare function ChunkComponent<RootDoc extends RootComponentType, Prefix extends string = "">(): ChunkComponentConstructor<RootDoc, Prefix>;
|
|
24
24
|
export {};
|
package/dist/api/wxSugar.d.ts
CHANGED
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
import type { IfEquals } from "hry-types/src/Any/IfEquals";
|
|
2
2
|
import type { IfExtends } from "hry-types/src/Any/IfExtends";
|
|
3
3
|
import type { NoInfer } from "hry-types/src/Generic/NoInfer";
|
|
4
|
+
import type { ComputeObject } from "../types/ComputeObj";
|
|
4
5
|
import type { WMNavigateToOption } from "../types/OfficialTypeAlias";
|
|
5
6
|
import type { RequiredKeys } from "../types/RequiredKeys";
|
|
6
7
|
import type { PageDoc } from "./DefineComponent/ReturnType/PageDoc";
|
|
7
|
-
type NavigateToOption<T extends PageDoc> = {
|
|
8
|
+
type NavigateToOption<T extends PageDoc> = ComputeObject<{
|
|
8
9
|
url: T["path"];
|
|
9
10
|
} & IfExtends<unknown, T["properties"], unknown, IfEquals<RequiredKeys<NonNullable<T["properties"]>>, never, {
|
|
10
11
|
data?: T["properties"];
|
|
11
12
|
}, {
|
|
12
13
|
data: T["properties"];
|
|
13
|
-
}>> & Omit<WMNavigateToOption, "url"
|
|
14
|
-
export declare function navigateTo<TPageDoc extends PageDoc = never>(option: NoInfer<NavigateToOption<TPageDoc
|
|
14
|
+
}>> & Omit<WMNavigateToOption, "url">>;
|
|
15
|
+
export declare function navigateTo<TPageDoc extends PageDoc = never>(option: NoInfer<NavigateToOption<TPageDoc>> & {
|
|
16
|
+
data?: object;
|
|
17
|
+
}, onBack?: (res: unknown) => void): Promise<WechatMiniprogram.NavigateToSuccessCallbackResult>;
|
|
15
18
|
type WMNavigateBackOption = WechatMiniprogram.NavigateBackOption;
|
|
16
19
|
type NavigateBackOption<Data> = WMNavigateBackOption & {
|
|
17
20
|
data?: Data;
|
|
18
21
|
};
|
|
19
22
|
export declare function navigateBack<Data, T extends NavigateBackOption<Data> = NavigateBackOption<Data>>(options?: T): WechatMiniprogram.PromisifySuccessResult<T, WMNavigateBackOption>;
|
|
20
|
-
export declare function redirectTo<TPageDoc extends PageDoc = never>(option: NoInfer<NavigateToOption<TPageDoc>>
|
|
23
|
+
export declare function redirectTo<TPageDoc extends PageDoc = never>(option: NoInfer<NavigateToOption<TPageDoc>> & {
|
|
24
|
+
data?: object;
|
|
25
|
+
}): Promise<WechatMiniprogram.GeneralCallbackResult>;
|
|
21
26
|
export {};
|
package/dist/api/wxSugar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wxSugar.js","sourceRoot":"","sources":["../../src/api/wxSugar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wxSugar.js","sourceRoot":"","sources":["../../src/api/wxSugar.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA4BnD,SAAS,mBAAmB,CAC1B,MAAuE;IAEvE,MAAM,MAAM,GAAuB;QACjC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,IACnC,kBAAkB,CAChB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAE/B,EAAE;KACH,CAAC;IAEF,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AACD,MAAM,SAAS,GAAmD,EAAE,CAAC;AAMrE,MAAM,UAAU,UAAU,CACxB,MAA+D,EAC/D,MAA+B;IAE/B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC,UAAU,CAClB,mBAAmB,CAAC,MAAuD,CAAC,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AAQD,MAAM,UAAU,YAAY,CAC1B,OAAW;IAEX,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;IACjC,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,GAAG,EAAE,EAAE;YACzB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AACD,MAAM,UAAU,UAAU,CACxB,MAA+D;IAE/D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC,UAAU,CAClB,mBAAmB,CAAC,MAAuD,CAAC,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Bubbles } from "../../api/RootComponent/CustomEvents/CustomEventsTag";
|
|
2
2
|
import type { WMBaseEvent } from "../../types/OfficialTypeAlias";
|
|
3
|
-
export
|
|
4
|
-
[key: string]: WMBaseEvent | Bubbles;
|
|
3
|
+
export type BaseEvents = {
|
|
5
4
|
touchstart: WMBaseEvent | Bubbles;
|
|
6
5
|
touchmove: WMBaseEvent | Bubbles;
|
|
7
6
|
touchcancel: WMBaseEvent | Bubbles;
|
|
@@ -14,4 +13,4 @@ export interface BaseEvents {
|
|
|
14
13
|
animationiteration: WMBaseEvent | Bubbles;
|
|
15
14
|
animationend: WMBaseEvent | Bubbles;
|
|
16
15
|
touchforcechange: WMBaseEvent | Bubbles;
|
|
17
|
-
}
|
|
16
|
+
};
|
package/dist/utils/_utils.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ import { deepEqual } from "./deepEqual";
|
|
|
4
4
|
import { isEmptyObject } from "./isEmptyObject";
|
|
5
5
|
import { nonNullable } from "./nonNullable";
|
|
6
6
|
import { throttle } from "./throttle";
|
|
7
|
-
|
|
7
|
+
import { typeEqual } from "./typeEqual";
|
|
8
|
+
export { debounce, deepClone, deepEqual, isEmptyObject, nonNullable, throttle, typeEqual };
|
package/dist/utils/_utils.js
CHANGED
|
@@ -4,5 +4,6 @@ import { deepEqual } from "./deepEqual";
|
|
|
4
4
|
import { isEmptyObject } from "./isEmptyObject";
|
|
5
5
|
import { nonNullable } from "./nonNullable";
|
|
6
6
|
import { throttle } from "./throttle";
|
|
7
|
-
|
|
7
|
+
import { typeEqual } from "./typeEqual";
|
|
8
|
+
export { debounce, deepClone, deepEqual, isEmptyObject, nonNullable, throttle, typeEqual };
|
|
8
9
|
//# sourceMappingURL=_utils.js.map
|
package/dist/utils/_utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_utils.js","sourceRoot":"","sources":["../../src/utils/_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"_utils.js","sourceRoot":"","sources":["../../src/utils/_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeEqual.js","sourceRoot":"","sources":["../../src/utils/typeEqual.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,SAAS;IAIvB,KAAK,CAAC,CAAC;AACT,CAAC"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@ import type { MethodsConstraint } from "../../RootComponent/Methods/MethodsConst
|
|
|
6
6
|
export type ChunkMethodsOption<
|
|
7
7
|
TMethods extends MethodsConstraint,
|
|
8
8
|
TDuplicateKeys extends PropertyKey,
|
|
9
|
-
|
|
9
|
+
Prefix extends string,
|
|
10
10
|
> = {
|
|
11
11
|
/**
|
|
12
12
|
* 与customEvents和events字段重复检测
|
|
@@ -16,7 +16,12 @@ export type ChunkMethodsOption<
|
|
|
16
16
|
& Validators<
|
|
17
17
|
[
|
|
18
18
|
G.DuplicateFieldValidator<TMethods, TDuplicateKeys, "字段重复">,
|
|
19
|
-
IfExtends<
|
|
19
|
+
IfExtends<
|
|
20
|
+
MethodsConstraint,
|
|
21
|
+
TMethods,
|
|
22
|
+
unknown,
|
|
23
|
+
IfExtends<Prefix, "", unknown, G.KeyValidator<TMethods, `${Prefix}_${string}`, "前缀错误">>
|
|
24
|
+
>,
|
|
20
25
|
]
|
|
21
26
|
>;
|
|
22
27
|
};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type { User } from "../../../../../jest/computed/methodsOfPrototype/methodsOfPrototype.test";
|
|
2
1
|
import { ChunkComponent } from "../..";
|
|
3
2
|
import type { Mock_RootDoc } from "../../ChunkComputed/test/mock";
|
|
4
|
-
|
|
3
|
+
export type User = {
|
|
4
|
+
name: string;
|
|
5
|
+
age?: number;
|
|
6
|
+
};
|
|
5
7
|
// 1. 没有对应字段报错
|
|
6
8
|
ChunkComponent<Mock_RootDoc, "zzz">()({
|
|
7
9
|
watch: {
|
|
@@ -16,7 +16,12 @@ export type ChunkEventsOption<
|
|
|
16
16
|
& Validators<
|
|
17
17
|
[
|
|
18
18
|
G.DuplicateFieldValidator<TEvents, TDuplicateKeys, "字段重复">,
|
|
19
|
-
IfExtends<
|
|
19
|
+
IfExtends<
|
|
20
|
+
ChunkEventsConstraint,
|
|
21
|
+
TEvents,
|
|
22
|
+
unknown,
|
|
23
|
+
IfExtends<Prefix, "", unknown, G.KeyValidator<TEvents, `${Prefix}_${string}`, "前缀错误">>
|
|
24
|
+
>,
|
|
20
25
|
]
|
|
21
26
|
>;
|
|
22
27
|
};
|
|
@@ -3,7 +3,24 @@ import type { Mock_RootDoc } from "../../ChunkData/test/mock";
|
|
|
3
3
|
|
|
4
4
|
ChunkComponent<Mock_RootDoc, "xxx">()({
|
|
5
5
|
events: {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
xxx_ddd() {
|
|
7
|
+
void 0;
|
|
8
|
+
},
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
ChunkComponent<{}>()({
|
|
12
|
+
data: {
|
|
13
|
+
ddd_src: "string",
|
|
14
|
+
ddd_arr: [1, 2, 3],
|
|
15
|
+
},
|
|
16
|
+
methods: {
|
|
17
|
+
ddffa() {
|
|
18
|
+
void 0;
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
events: {
|
|
22
|
+
ddd_aaa(e) {
|
|
23
|
+
console.log(e);
|
|
24
|
+
},
|
|
8
25
|
},
|
|
9
26
|
});
|
|
@@ -47,12 +47,12 @@ type ChunkComponentOptions<
|
|
|
47
47
|
& ChunkEventsOption<
|
|
48
48
|
TEvents,
|
|
49
49
|
keyof (RootMethods & RootEvents & IInjectMethods),
|
|
50
|
-
|
|
50
|
+
Prefix
|
|
51
51
|
>
|
|
52
52
|
& ChunkMethodsOption<
|
|
53
53
|
TMethods,
|
|
54
54
|
keyof (RootMethods & RootEvents & EventsDoc & IInjectMethods),
|
|
55
|
-
|
|
55
|
+
Prefix
|
|
56
56
|
>
|
|
57
57
|
& ThisType<
|
|
58
58
|
RootComponentInstance<
|
|
@@ -174,3 +174,36 @@ CustomComponent<{}, Wm.View>()({
|
|
|
174
174
|
// ...
|
|
175
175
|
},
|
|
176
176
|
});
|
|
177
|
+
|
|
178
|
+
// 5 可以调用自身事件
|
|
179
|
+
CustomComponent<{ methods: { aaa: () => string } }, Wm.View>()({
|
|
180
|
+
methods: {
|
|
181
|
+
view_xxx() {
|
|
182
|
+
return 123;
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
events: {
|
|
186
|
+
view_tap(e: Detail<number>) {
|
|
187
|
+
this.view_xxx();
|
|
188
|
+
Checking<typeof e.detail, number, Test.Pass>;
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
// 5 可以调用自身事件
|
|
193
|
+
CustomComponent<{ methods: { aaa: () => string } }, Wm.Map>()({
|
|
194
|
+
methods: {
|
|
195
|
+
map_xxx() {
|
|
196
|
+
return 123;
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
events: {
|
|
200
|
+
map_poitap(e) {
|
|
201
|
+
this.map_xxx();
|
|
202
|
+
Checking<typeof e.detail, {
|
|
203
|
+
name: string;
|
|
204
|
+
longitude: number;
|
|
205
|
+
latitude: number;
|
|
206
|
+
}, Test.Pass>;
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
});
|
package/src/api/wxSugar.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { IfEquals } from "hry-types/src/Any/IfEquals";
|
|
2
2
|
import type { IfExtends } from "hry-types/src/Any/IfExtends";
|
|
3
3
|
import type { NoInfer } from "hry-types/src/Generic/NoInfer";
|
|
4
|
+
import type { ComputeObject } from "../types/ComputeObj";
|
|
4
5
|
import type { WMNavigateToOption } from "../types/OfficialTypeAlias";
|
|
5
6
|
import type { RequiredKeys } from "../types/RequiredKeys";
|
|
6
7
|
import { INNERMARKER } from "../utils/InnerMarker";
|
|
7
8
|
import type { PageDoc } from "./DefineComponent/ReturnType/PageDoc";
|
|
8
9
|
|
|
9
|
-
type NavigateToOption<T extends PageDoc> =
|
|
10
|
+
type NavigateToOption<T extends PageDoc> = ComputeObject<
|
|
10
11
|
& {
|
|
11
12
|
url: T["path"];
|
|
12
13
|
}
|
|
@@ -25,7 +26,8 @@ type NavigateToOption<T extends PageDoc> =
|
|
|
25
26
|
}
|
|
26
27
|
>
|
|
27
28
|
>
|
|
28
|
-
& Omit<WMNavigateToOption, "url"
|
|
29
|
+
& Omit<WMNavigateToOption, "url">
|
|
30
|
+
>;
|
|
29
31
|
|
|
30
32
|
/**
|
|
31
33
|
* 对象中可以使用 `"; / ? : @ & = + $ `, #"做为数据的一部分
|
|
@@ -54,11 +56,10 @@ const backFuncs: (undefined | ((...args: unknown[]) => void))[] = [];
|
|
|
54
56
|
* navigateTo API 为 wx.navigateTo的语法糖,增加了data字段,最终的url数据拼接了通过encodeURIComponent编码(支持默认忽略的特殊符号)的data字段,在跳转页面的onload中通过decodeURIComponent解析url赋值给实例的data对象。为求使用时更加方便(无需对参数data解析再赋值)。且有ts类型提示。
|
|
55
57
|
*/
|
|
56
58
|
export function navigateTo<TPageDoc extends PageDoc = never>(
|
|
57
|
-
option: NoInfer<NavigateToOption<TPageDoc
|
|
59
|
+
option: NoInfer<NavigateToOption<TPageDoc>> & { data?: object },
|
|
58
60
|
onBack?: (res: unknown) => void,
|
|
59
61
|
) {
|
|
60
62
|
backFuncs.push(onBack);
|
|
61
|
-
// @ts-ignore 隐式索引
|
|
62
63
|
if (!option.data) {
|
|
63
64
|
return wx.navigateTo(option);
|
|
64
65
|
} else {
|
|
@@ -94,9 +95,8 @@ export function navigateBack<Data, T extends NavigateBackOption<Data> = Navigate
|
|
|
94
95
|
return wx.navigateBack(options);
|
|
95
96
|
}
|
|
96
97
|
export function redirectTo<TPageDoc extends PageDoc = never>(
|
|
97
|
-
option: NoInfer<NavigateToOption<TPageDoc
|
|
98
|
+
option: NoInfer<NavigateToOption<TPageDoc>> & { data?: object },
|
|
98
99
|
) {
|
|
99
|
-
// @ts-ignore 隐式索引
|
|
100
100
|
if (!option.data) {
|
|
101
101
|
return wx.redirectTo(option);
|
|
102
102
|
} else {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Bubbles } from "../../api/RootComponent/CustomEvents/CustomEventsTag";
|
|
2
2
|
import type { WMBaseEvent } from "../../types/OfficialTypeAlias";
|
|
3
3
|
|
|
4
|
-
export
|
|
5
|
-
[key: string]: WMBaseEvent | Bubbles;
|
|
4
|
+
export type BaseEvents = {
|
|
5
|
+
// [key: string]: WMBaseEvent | Bubbles;
|
|
6
6
|
/**
|
|
7
7
|
* 手指触摸动作开始
|
|
8
8
|
*/
|
|
@@ -51,4 +51,4 @@ export interface BaseEvents {
|
|
|
51
51
|
* 在支持 3D Touch 的 iPhone 设备,重按时会触发 1.9.90
|
|
52
52
|
*/
|
|
53
53
|
touchforcechange: WMBaseEvent | Bubbles;
|
|
54
|
-
}
|
|
54
|
+
};
|
package/src/utils/_utils.ts
CHANGED
|
@@ -4,5 +4,5 @@ import { deepEqual } from "./deepEqual";
|
|
|
4
4
|
import { isEmptyObject } from "./isEmptyObject";
|
|
5
5
|
import { nonNullable } from "./nonNullable";
|
|
6
6
|
import { throttle } from "./throttle";
|
|
7
|
-
|
|
8
|
-
export { debounce, deepClone, deepEqual, isEmptyObject, nonNullable, throttle };
|
|
7
|
+
import { typeEqual } from "./typeEqual";
|
|
8
|
+
export { debounce, deepClone, deepEqual, isEmptyObject, nonNullable, throttle, typeEqual };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Equals } from "hry-types/src/Any/Equals";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 类型相等验证,用于测试。
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* Checking<1, 1> // no error;
|
|
8
|
+
* Checking<1, 0> // error at 0;
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export function typeEqual<
|
|
12
|
+
A,
|
|
13
|
+
B extends Equals<A, B> extends true ? unknown : never,
|
|
14
|
+
>() {
|
|
15
|
+
void 0;
|
|
16
|
+
}
|