2017-03-17 94 views
1

考虑下面的代码来定义与通用类型参数TRow一个阵营组分:如何用泛型类型参数定义变量?

function DataTable<TRow> ({ rows: TRow[] }) { 
    return (
) 
} 

在前面的代码中,使用ES6和组件被定义为无状态的功能:

const DataTable = ({ rows }) => (...) 

我怎样才能定义这样一个函数,使其具有泛型类型参数TRow?这是否受到Typescript的支持?

+0

我完全把你的问题弄错了,我不明白为什么你想要一个函数在常量上。也许你可以做公共静态yourFunction (somearg:T){} ??? –

+0

是的,就像我在问题中所展示的一样,我可以使用函数DataTable ...定义它。然而,因为所有的代码都使用类似'const DataTable = ...'的代码,所以我认为保持相同的语法是很好的,但不知何故添加了泛型。 –

回答

0

是的,你完全可以用打字稿做你想做的事。

让我们假设你将使用类型参数保持器TRow(可以是任何类型的行)将通用类型包装在通用接口DataTableProps中。

interface DataTableProps<TRow> { 
     items: Array<TRow> 
    } 

现在,您想在您的反应组件类中使用该属性类型。因此,假设您的组件是无状态的,我们将使用React.SFC类型来指代无状态响应组件。

function getDataTableComp<TRow>() : React.SFC<DataTableProps<TRow>>{ 
     return props => <div> 
      <p>{props.items.toString()}</p> 
     </div> 
    } 

这是一个返回特定类型的无状态反应分量的函数。然后,我们可以使用该功能的,

const MyStringDataTable = getDataTableComp<string>(); 

现在,我们有一个特定的数据表类型,串行的,即数据表。然后,我们可以用一个实例作为

ReactDOM.render(<MyStringDataTable items={['a', 'b']} />, document.getElementById('page-root')) 

您将获得a,b呈现在你的页面。