Top*_*ter 7 javascript types jsdoc typescript react-native
考虑使用myTypes常量持有道具类型(写在名为 的文件中my-component.js),如下所示:
import React from 'react'
import { View } from 'react-native'
import PropTypes from 'prop-types'
export const myTypes = {
activeColor: PropTypes.string,
color: PropTypes.string,
fontFamily: PropTypes.string,
fontSize: PropTypes.number,
fontWeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
height: PropTypes.number,
icon: PropTypes.node,
iconOverlay: PropTypes.node,
marginBottom: PropTypes.number,
marginLeft: PropTypes.number,
marginRight: PropTypes.number,
marginTop: PropTypes.number,
maxHeight: PropTypes.number,
minHeight: PropTypes.number,
onBlur: PropTypes.func,
onChangeText: PropTypes.func,
paddingBottom: PropTypes.number,
paddingLeft: PropTypes.number,
paddingRight: PropTypes.number,
paddingTop: PropTypes.number
}
export default class MyComponent extends React.Component {
static propTypes = myTypes
render () {
return (
<View></View>
);
}
}
Run Code Online (Sandbox Code Playgroud)
myTypes用作类型或帮助程序来启用 IDE 自动完成?我尝试过的(在另一个文件中type-script)如下:
import MyComponent, { myTypes } from 'my-component';
const dark_theme_properties: myTypes = {
activeColor: 'green'
};
Run Code Online (Sandbox Code Playgroud)
但是,当然,这会导致'myTypes' refers to a value, but is being used as a type here. ts(2749)错误,并且使用typeof myTypes也不会在 IDE 中提供正确的自动完成功能。
请注意,组件是在
JavaScript ES6期望自动完成时写入的type-script(导入上述 JS 的地方)。
我们可以使用InferProps的@types/prop-types包,从道具类型的对象提取原始类型,如:
import PropTypes, { InferProps } from 'prop-types'
const myTypes = {
activeColor: PropTypes.string,
// ...
}
type MyComponentProps = InferProps<typeof myTypes>
const dark_theme_properties: MyComponentProps = {
activeColor: 'green'
// ...
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4550 次 |
| 最近记录: |