diff --git a/test/issue.test.ts b/test/issue.test.ts index a7b0b84..9390d0c 100644 --- a/test/issue.test.ts +++ b/test/issue.test.ts @@ -598,4 +598,40 @@ import WX = WechatMiniprogram }, } }) +} + +{ + const b1 = Behavior({ + methods: { + methodA() { + return [''] + }, + }, + }) + const b2 = Behavior({ + properties: { + pB: { + type: Array, + value: [] as string[], + } + } + }) + const b3 = Behavior({ + data: { + dataC: 'init data', + } + }) + + Component({ + behaviors: [b1, b2, b3], + methods: { + test() { + expectType(this.data.pB) + expectType(this.data.dataC) + expectType(this.methodA()) + expectError(this.data.xxx) + expectError(this.properties.yyy) + }, + } + }) } \ No newline at end of file diff --git a/types/wx/lib.wx.behavior.d.ts b/types/wx/lib.wx.behavior.d.ts index 140259e..251c0e3 100644 --- a/types/wx/lib.wx.behavior.d.ts +++ b/types/wx/lib.wx.behavior.d.ts @@ -29,9 +29,9 @@ declare namespace WechatMiniprogram.Behavior { TBehavior extends BehaviorOption = [] > = string & { [key in 'BehaviorType']?: { - data: TData & Component.MixinData - properties: TProperty & Component.MixinProperties - methods: TMethod & Component.MixinMethods + data: Component.FilterUnknownType & Component.MixinData + properties: Component.FilterUnknownType & Component.MixinProperties + methods: Component.FilterUnknownType & Component.MixinMethods } } type Instance< diff --git a/types/wx/lib.wx.component.d.ts b/types/wx/lib.wx.component.d.ts index 3731be8..3753624 100644 --- a/types/wx/lib.wx.component.d.ts +++ b/types/wx/lib.wx.component.d.ts @@ -21,7 +21,7 @@ SOFTWARE. ***************************************************************************** */ declare namespace WechatMiniprogram.Component { - type FilterUnknownProperty = string extends keyof TProperty ? {} : TProperty + type FilterUnknownType = string extends keyof T ? {} : T type Instance< TData extends DataOption, TProperty extends PropertyOption, @@ -36,11 +36,11 @@ declare namespace WechatMiniprogram.Component { (TIsPage extends true ? Page.ILifetime : {}) & Omit & { /** 组件数据,**包括内部数据和属性值** */ - data: TData & MixinData & - MixinProperties & PropertyOptionToData> + data: FilterUnknownType & MixinData & + MixinProperties & PropertyOptionToData> /** 组件数据,**包括内部数据和属性值**(与 `data` 一致) */ - properties: TData & MixinData & - MixinProperties & PropertyOptionToData> + properties: FilterUnknownType & MixinData & + MixinProperties & PropertyOptionToData> } type IEmptyArray = []