如何轻松获得ts类型的反应本征道具?

时间:2019-01-30 19:00:32

标签: reactjs typescript react-native

最近我发现自己做了很多事情

interface Props = {
  onPress: TouchableWithoutFeedback.onPress
}

本质上,我是在围绕本机组件构建自己的“包装器”组件,这些包装器组件通常采用类似的道具作为它们包装的本机组件。我必须总是重新键入这些道具。

我不想扩展本机组件的所有道具,而是公开一些非常具体的道具。做这样的事情真棒

ONLY_ACTIVE_ARCH = NO;

不幸的是,这不起作用,但是由于我没有定义自己的类型,类似这样的东西对道具安全性有很大帮助。

这可以通过某种方式实现吗?

1 个答案:

答案 0 :(得分:3)

您需要使用类型定义,而不是类本身。假设您已安装@types/react-native

import { TouchableWithoutFeedbackProps } from 'react-native'

interface Props {
  onPress: TouchableWithoutFeedbackProps["onPress"] // <-- must be bracket notation
}

我认为它们的所有道具属性定义都遵循相同的命名模式,因此View将是ViewPropsText将是TextProps

括号表示法是因为点表示法仅对ts中的名称空间有效