From b20865ffb6a64383ad4a2aeb14ec1aa4f33d1e94 Mon Sep 17 00:00:00 2001
From: tangjinzhou <415800467@qq.com>
Date: Fri, 26 Nov 2021 22:34:27 +0800
Subject: [PATCH] fix: ts type error

---
 components/mentions/index.tsx        |  2 +
 components/steps/index.tsx           |  6 ++-
 components/table/index.tsx           | 59 ++++++++++------------------
 components/tree/index.tsx            |  5 ++-
 components/vc-table/Footer/index.tsx |  4 +-
 5 files changed, 32 insertions(+), 44 deletions(-)

diff --git a/components/mentions/index.tsx b/components/mentions/index.tsx
index f2bb1fbd3..5e29d7286 100644
--- a/components/mentions/index.tsx
+++ b/components/mentions/index.tsx
@@ -8,6 +8,7 @@ import useConfigInject from '../_util/hooks/useConfigInject';
 import { flattenChildren, getOptionProps } from '../_util/props-util';
 import { useInjectFormItemContext } from '../form/FormItemContext';
 import omit from '../_util/omit';
+import { optionProps } from '../vc-mentions/src/Option';
 
 interface MentionsConfig {
   prefix?: string | string[];
@@ -209,6 +210,7 @@ const Mentions = defineComponent({
 export const MentionsOption = defineComponent({
   ...Option,
   name: 'AMentionsOption',
+  props: optionProps,
 });
 
 export default Object.assign(Mentions, {
diff --git a/components/steps/index.tsx b/components/steps/index.tsx
index c445b8395..3b4e6802f 100644
--- a/components/steps/index.tsx
+++ b/components/steps/index.tsx
@@ -122,7 +122,11 @@ const Steps = defineComponent({
 });
 
 /* istanbul ignore next */
-export const Step = defineComponent({ ...VcStep, name: 'AStep', props: VcStepProps() });
+export const Step = defineComponent({
+  ...VcStep,
+  name: 'AStep',
+  props: VcStepProps(),
+});
 export default Object.assign(Steps, {
   Step,
   install: (app: App) => {
diff --git a/components/table/index.tsx b/components/table/index.tsx
index 3121d7540..9fb8af607 100644
--- a/components/table/index.tsx
+++ b/components/table/index.tsx
@@ -14,48 +14,13 @@ export type { TableProps, TablePaginationConfig };
 const TableSummaryRow = defineComponent({ ...SummaryRow, name: 'ATableSummaryRow' });
 const TableSummaryCell = defineComponent({ ...SummaryCell, name: 'ATableSummaryCell' });
 
-const TempSummary = defineComponent({
-  ...Summary,
+const TableSummary = Object.assign(Summary, {
+  Cell: TableSummaryCell,
+  Row: TableSummaryRow,
   name: 'ATableSummary',
 });
 
-const TableSummary = TempSummary as typeof TempSummary & {
-  Cell: typeof TableSummaryCell;
-  Row: typeof TableSummaryRow;
-};
-TableSummary.Cell = TableSummaryCell;
-TableSummary.Row = TableSummaryRow;
-
-const T = Table as typeof Table &
-  Plugin & {
-    Column: typeof Column;
-    ColumnGroup: typeof ColumnGroup;
-    Summary: typeof TableSummary;
-    SELECTION_ALL: typeof SELECTION_ALL;
-    SELECTION_INVERT: typeof SELECTION_INVERT;
-    SELECTION_NONE: typeof SELECTION_NONE;
-  };
-
-T.SELECTION_ALL = SELECTION_ALL;
-T.SELECTION_INVERT = SELECTION_INVERT;
-T.SELECTION_NONE = SELECTION_NONE;
-
-T.Column = Column;
-T.ColumnGroup = ColumnGroup;
-
-T.Summary = TableSummary;
-
 /* istanbul ignore next */
-T.install = function (app: App) {
-  app.component(TableSummary.name, TableSummary);
-  app.component(TableSummaryCell.name, TableSummaryCell);
-  app.component(TableSummaryRow.name, TableSummaryRow);
-  app.component(T.name, T);
-  app.component(T.Column.name, Column);
-  app.component(T.ColumnGroup.name, ColumnGroup);
-  return app;
-};
-
 export {
   tableProps,
   TableSummary,
@@ -65,4 +30,20 @@ export {
   ColumnGroup as TableColumnGroup,
 };
 
-export default T;
+export default Object.assign(Table, {
+  SELECTION_ALL,
+  SELECTION_INVERT,
+  SELECTION_NONE,
+  Column,
+  ColumnGroup,
+  Summary: TableSummary,
+  install: (app: App) => {
+    app.component(TableSummary.name, TableSummary);
+    app.component(TableSummaryCell.name, TableSummaryCell);
+    app.component(TableSummaryRow.name, TableSummaryRow);
+    app.component(Table.name, Table);
+    app.component(Column.name, Column);
+    app.component(ColumnGroup.name, ColumnGroup);
+    return app;
+  },
+});
diff --git a/components/tree/index.tsx b/components/tree/index.tsx
index 10e8b539a..7df8bb55d 100644
--- a/components/tree/index.tsx
+++ b/components/tree/index.tsx
@@ -1,8 +1,9 @@
 import type { App } from 'vue';
 import { defineComponent } from 'vue';
 import Tree from './Tree';
-import { TreeNode as VsTreeNode } from '../vc-tree';
+import { TreeNode as VcTreeNode } from '../vc-tree';
 import DirectoryTree from './DirectoryTree';
+import { treeNodeProps } from '../vc-tree/props';
 
 export type { EventDataNode, DataNode } from '../vc-tree/interface';
 
@@ -25,7 +26,7 @@ export type {
 
 /* istanbul ignore next */
 
-const TreeNode = defineComponent({ ...VsTreeNode, name: 'ATreeNode' });
+const TreeNode = defineComponent({ ...VcTreeNode, name: 'ATreeNode', props: treeNodeProps });
 
 export { DirectoryTree, TreeNode };
 
diff --git a/components/vc-table/Footer/index.tsx b/components/vc-table/Footer/index.tsx
index c27762d31..77112898c 100644
--- a/components/vc-table/Footer/index.tsx
+++ b/components/vc-table/Footer/index.tsx
@@ -12,10 +12,10 @@ export interface FooterProps<RecordType = DefaultRecordType> {
   flattenColumns: FlattenColumns<RecordType>;
 }
 
-export default defineComponent({
+export default defineComponent<FooterProps>({
   name: 'Footer',
   inheritAttrs: false,
-  props: ['stickyOffsets', 'flattenColumns'],
+  props: ['stickyOffsets', 'flattenColumns'] as any,
   setup(props, { slots }) {
     const tableContext = useInjectTable();
     useProvideSummary(