Я создал файл интерфейсов:
import { CompositeNavigationProp } from '@react-navigation/native'
import { MaterialBottomTabNavigationProp } from '@react-navigation/material-bottom-tabs'
import { StackNavigationProp } from '@react-navigation/stack'
export type ITabOneParams = {}
export type ITabTwoParams = {}
export type IStackOneParams = {
headerTitle: string
itemId: string
}
export type IHomeTabsParams = {
TabOne: ITabOneParams
TabTwo: ITabTwoParams
}
export type IHomeStackParams = {
HomeTabs: IHomeTabsParams
StackOne: IStackOneParams
}
export {
MaterialBottomTabNavigationProp,
StackNavigationProp,
CompositeNavigationProp
}
Вот компонент, использующий эти интерфейсы:
import React, { PureComponent } from 'react'
import { StyleSheet, Text, View } from 'react-native'
import { Button } from 'react-native-paper'
import {
CompositeNavigationProp,
MaterialBottomTabNavigationProp,
StackNavigationProp,
IHomeStackParams,
IHomeTabsParams
} from '../../interfaces/router'
export default class TabOne extends PureComponent<OwnProps> {
render () {
return (
<View>
<Text>TabOne</Text>
<Button
onPress={() => this.props.navigation.navigate('StackOne')}
>
Go to StackOne
</Button>
</View>
)
}
}
type TabOneScreenNavigationProp = CompositeNavigationProp<
MaterialBottomTabNavigationProp<IHomeTabsParams, 'TabOne'>,
StackNavigationProp<IHomeStackParams>
>
export interface OwnProps {
navigation: TabOneScreenNavigationProp
}
Я ожидаю, что this.props.navigation.navigate('StackOne')
выдаст ошибку типа, потому что согласно В моем определении типа требуются параметры headerTitle
и itemId
. Этого не происходит, машинопись считает этот метод правильным. Как я могу заставить машинопись выдавать ошибку в таких случаях?