Skip to content

Commit 101acb8

Browse files
author
boquanfu
committed
fix: compatibilities with miniprogram-api-typings
1 parent 6ac8392 commit 101acb8

File tree

3 files changed

+40
-22
lines changed

3 files changed

+40
-22
lines changed

src/index.ts

+27-11
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,32 @@ import { behavior } from './behavior'
22

33
export { behavior, computed, watch } from './behavior'
44

5+
type FilterUnknownType<T> = WechatMiniprogram.Component.FilterUnknownType<T>
6+
7+
type AllDataAndProperties<
8+
TData extends WechatMiniprogram.Component.DataOption,
9+
TProperty extends WechatMiniprogram.Component.PropertyOption,
10+
TBehavior extends WechatMiniprogram.Component.BehaviorOption,
11+
> = FilterUnknownType<TData> &
12+
WechatMiniprogram.Component.MixinData<TBehavior> &
13+
WechatMiniprogram.Component.MixinProperties<TBehavior> &
14+
WechatMiniprogram.Component.PropertyOptionToData<FilterUnknownType<TProperty>>
15+
16+
517
type ComputedInstance<
6-
D extends WechatMiniprogram.Component.DataOption,
7-
P extends WechatMiniprogram.Component.PropertyOption,
8-
M extends WechatMiniprogram.Component.MethodOption,
9-
B extends WechatMiniprogram.Component.BehaviorOption,
10-
C extends Record<string, (data: D & { [K in keyof P]: any }) => any>,
18+
TData extends WechatMiniprogram.Component.DataOption,
19+
TProperty extends WechatMiniprogram.Component.PropertyOption,
20+
TMethod extends WechatMiniprogram.Component.MethodOption,
21+
TBehavior extends WechatMiniprogram.Component.BehaviorOption,
22+
TComputed extends Record<string, (data: AllDataAndProperties<TData, TProperty, TBehavior>) => any>,
1123
TCustomProperty extends WechatMiniprogram.IAnyObject = Record<string, never>,
12-
> = WechatMiniprogram.Component.Instance<D, P, M, B, TCustomProperty> & {
13-
data: { [K in keyof C]: ReturnType<C[K]> } & { [K in keyof P]: any }
14-
}
24+
> = WechatMiniprogram.Component.Instance<
25+
TData & { [k in keyof TComputed]: ReturnType<TComputed[k]> },
26+
TProperty,
27+
TMethod,
28+
TBehavior,
29+
TCustomProperty
30+
>
1531

1632
type ComputedOptions<
1733
TData extends WechatMiniprogram.Component.DataOption,
@@ -21,7 +37,7 @@ type ComputedOptions<
2137
TWatch extends Record<string, (...args: any[]) => void>,
2238
TComputed extends Record<
2339
string,
24-
(data: TData & WechatMiniprogram.Component.PropertyOptionToData<TProperty>) => any
40+
(data: AllDataAndProperties<TData, TProperty, TBehavior>) => any
2541
>,
2642
TCustomInstanceProperty extends WechatMiniprogram.IAnyObject = {},
2743
> = (Partial<WechatMiniprogram.Component.Data<TData>> &
@@ -44,7 +60,7 @@ export function ComponentWithComputed<
4460
TWatch extends Record<string, (...args: any[]) => void>,
4561
TComputed extends Record<
4662
string,
47-
(data: TData & WechatMiniprogram.Component.PropertyOptionToData<TProperty>) => any
63+
(data: AllDataAndProperties<TData, TProperty, TBehavior>) => any
4864
>,
4965
TCustomInstanceProperty extends WechatMiniprogram.IAnyObject = {},
5066
>(
@@ -65,7 +81,7 @@ export function BehaviorWithComputed<
6581
TWatch extends Record<string, (...args: any[]) => void>,
6682
TComputed extends Record<
6783
string,
68-
(data: TData & WechatMiniprogram.Component.PropertyOptionToData<TProperty>) => any
84+
(data: AllDataAndProperties<TData, TProperty, TBehavior>) => any
6985
>,
7086
TCustomInstanceProperty extends WechatMiniprogram.IAnyObject = {},
7187
>(

test/index.test.ts

+3
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,7 @@ describe('computed behavior', () => {
710710
test('computed and watch inside behaviors', () => {
711711
const behA = BehaviorWithComputed({
712712
behaviors: [computedBehavior],
713+
data: { a: 0 },
713714
computed: {
714715
b(data) {
715716
return data.a * 2
@@ -794,6 +795,7 @@ describe('computed behavior', () => {
794795
const behB = BehaviorWithComputed({
795796
behaviors: [behA],
796797
data: {
798+
a2: 0,
797799
b1: 10,
798800
},
799801
computed: {
@@ -899,6 +901,7 @@ describe('computed behavior', () => {
899901
const behA = BehaviorWithComputed({
900902
data: {
901903
a: 1,
904+
b: 0,
902905
},
903906
computed: {
904907
d() {

types/index.d.ts

+10-11
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
export { behavior, computed, watch } from './behavior';
2-
type ComputedInstance<D extends WechatMiniprogram.Component.DataOption, P extends WechatMiniprogram.Component.PropertyOption, M extends WechatMiniprogram.Component.MethodOption, B extends WechatMiniprogram.Component.BehaviorOption, C extends Record<string, (data: D & {
3-
[K in keyof P]: any;
4-
}) => any>, TCustomProperty extends WechatMiniprogram.IAnyObject = Record<string, never>> = WechatMiniprogram.Component.Instance<D, P, M, B, TCustomProperty> & {
5-
data: {
6-
[K in keyof C]: ReturnType<C[K]>;
7-
} & {
8-
[K in keyof P]: any;
9-
};
2+
type FilterUnknownType<T> = WechatMiniprogram.Component.FilterUnknownType<T>;
3+
type AllDataAndProperties<TData extends WechatMiniprogram.Component.DataOption, TProperty extends WechatMiniprogram.Component.PropertyOption, TBehavior extends WechatMiniprogram.Component.BehaviorOption> = {
4+
data: FilterUnknownType<TData> & WechatMiniprogram.Component.MixinData<TBehavior> & WechatMiniprogram.Component.MixinProperties<TBehavior> & WechatMiniprogram.Component.PropertyOptionToData<FilterUnknownType<TProperty>>;
5+
properties: FilterUnknownType<TData> & WechatMiniprogram.Component.MixinData<TBehavior> & WechatMiniprogram.Component.MixinProperties<TBehavior> & WechatMiniprogram.Component.PropertyOptionToData<FilterUnknownType<TProperty>>;
106
};
11-
type ComputedOptions<TData extends WechatMiniprogram.Component.DataOption, TProperty extends WechatMiniprogram.Component.PropertyOption, TMethod extends WechatMiniprogram.Component.MethodOption, TBehavior extends WechatMiniprogram.Component.BehaviorOption, TWatch extends Record<string, (...args: any[]) => void>, TComputed extends Record<string, (data: TData & WechatMiniprogram.Component.PropertyOptionToData<TProperty>) => any>, TCustomInstanceProperty extends WechatMiniprogram.IAnyObject = {}> = (Partial<WechatMiniprogram.Component.Data<TData>> & Partial<WechatMiniprogram.Component.Property<TProperty>> & Partial<WechatMiniprogram.Component.Method<TMethod>> & Partial<WechatMiniprogram.Component.Behavior<TBehavior>> & Partial<WechatMiniprogram.Component.OtherOption> & Partial<WechatMiniprogram.Component.Lifetimes> & {
7+
type ComputedInstance<TData extends WechatMiniprogram.Component.DataOption, TProperty extends WechatMiniprogram.Component.PropertyOption, TMethod extends WechatMiniprogram.Component.MethodOption, TBehavior extends WechatMiniprogram.Component.BehaviorOption, TComputed extends Record<string, (data: AllDataAndProperties<TData, TProperty, TBehavior>) => any>, TCustomProperty extends WechatMiniprogram.IAnyObject = Record<string, never>> = WechatMiniprogram.Component.Instance<TData & {
8+
[k in keyof TComputed]: ReturnType<TComputed[k]>;
9+
}, TProperty, TMethod, TBehavior, TCustomProperty>;
10+
type ComputedOptions<TData extends WechatMiniprogram.Component.DataOption, TProperty extends WechatMiniprogram.Component.PropertyOption, TMethod extends WechatMiniprogram.Component.MethodOption, TBehavior extends WechatMiniprogram.Component.BehaviorOption, TWatch extends Record<string, (...args: any[]) => void>, TComputed extends Record<string, (data: AllDataAndProperties<TData, TProperty, TBehavior>) => any>, TCustomInstanceProperty extends WechatMiniprogram.IAnyObject = {}> = (Partial<WechatMiniprogram.Component.Data<TData>> & Partial<WechatMiniprogram.Component.Property<TProperty>> & Partial<WechatMiniprogram.Component.Method<TMethod>> & Partial<WechatMiniprogram.Component.Behavior<TBehavior>> & Partial<WechatMiniprogram.Component.OtherOption> & Partial<WechatMiniprogram.Component.Lifetimes> & {
1211
watch?: TWatch;
1312
computed?: TComputed;
1413
template?: string;
1514
}) & ThisType<ComputedInstance<TData, TProperty, TMethod, TBehavior, TComputed, TCustomInstanceProperty>>;
16-
export declare function ComponentWithComputed<TData extends WechatMiniprogram.Component.DataOption, TProperty extends WechatMiniprogram.Component.PropertyOption, TMethod extends WechatMiniprogram.Component.MethodOption, TBehavior extends WechatMiniprogram.Component.BehaviorOption, TWatch extends Record<string, (...args: any[]) => void>, TComputed extends Record<string, (data: TData & WechatMiniprogram.Component.PropertyOptionToData<TProperty>) => any>, TCustomInstanceProperty extends WechatMiniprogram.IAnyObject = {}>(options: ComputedOptions<TData, TProperty, TMethod, TBehavior, TWatch, TComputed, TCustomInstanceProperty>): string;
17-
export declare function BehaviorWithComputed<TData extends WechatMiniprogram.Behavior.DataOption, TProperty extends WechatMiniprogram.Behavior.PropertyOption, TMethod extends WechatMiniprogram.Behavior.MethodOption, TBehavior extends WechatMiniprogram.Component.BehaviorOption, TWatch extends Record<string, (...args: any[]) => void>, TComputed extends Record<string, (data: TData & WechatMiniprogram.Component.PropertyOptionToData<TProperty>) => any>, TCustomInstanceProperty extends WechatMiniprogram.IAnyObject = {}>(options: ComputedOptions<TData, TProperty, TMethod, TBehavior, TWatch, TComputed, TCustomInstanceProperty>): string;
15+
export declare function ComponentWithComputed<TData extends WechatMiniprogram.Component.DataOption, TProperty extends WechatMiniprogram.Component.PropertyOption, TMethod extends WechatMiniprogram.Component.MethodOption, TBehavior extends WechatMiniprogram.Component.BehaviorOption, TWatch extends Record<string, (...args: any[]) => void>, TComputed extends Record<string, (data: AllDataAndProperties<TData, TProperty, TBehavior>) => any>, TCustomInstanceProperty extends WechatMiniprogram.IAnyObject = {}>(options: ComputedOptions<TData, TProperty, TMethod, TBehavior, TWatch, TComputed, TCustomInstanceProperty>): string;
16+
export declare function BehaviorWithComputed<TData extends WechatMiniprogram.Behavior.DataOption, TProperty extends WechatMiniprogram.Behavior.PropertyOption, TMethod extends WechatMiniprogram.Behavior.MethodOption, TBehavior extends WechatMiniprogram.Component.BehaviorOption, TWatch extends Record<string, (...args: any[]) => void>, TComputed extends Record<string, (data: AllDataAndProperties<TData, TProperty, TBehavior>) => any>, TCustomInstanceProperty extends WechatMiniprogram.IAnyObject = {}>(options: ComputedOptions<TData, TProperty, TMethod, TBehavior, TWatch, TComputed, TCustomInstanceProperty>): string;
1817
export declare enum DataTracerMode {
1918
Auto = 0,
2019
Proxy = 1,

0 commit comments

Comments
 (0)