#javascript #reactjs #typescript #react-native
#javascript #reactjs #typescript #react-native
Вопрос:
У меня есть компонент под названием ColorBox, и внутри его папки у меня есть сам компонент, его стиль, файл индекса и index.d.ts
файл для моих типов:
ColorBox
|- Colorbox.tsx
|- index.ts
|- styles.ts
|- index.d.ts
Вот мой index.d.ts
файл:
export interface IProps {
colorName: string;
colorHex: string;
}
export interface IBGColor {
backgroundColor: string;
}
и это мой ColorBox.tsx
компонент:
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
import styles from './styles';
const ColorBox: React.FC<IProps> = ({ colorName, colorHex }) => {
const boxColor: IBGColor = {
backgroundColor: colorHex,
};
return (
<View style={[styles.box, boxColor]}>
<Text style={styles.boxText}>{colorName}</Text>
</View>
);
};
export default ColorBox;
Проблема в том, что типы IProps
и IBGColor
не импортируются автоматически из index.d.ts
файла, как это работает, я читал статьи о TypeScript, и упоминалось, что если вы поместите index.d.ts
файл внутри модуля, TypeScript будет полагаться на это и пытаться найти типы из этого файла, но почему это не работает в моем компоненте?
Должен ли я явно импортировать используемые типы внутри моего модуля? Если да, то в чем преимущество, которое index.d.ts
предоставляет нам файл?
Также я использую обычный проект инициализации react-native, а не какие-либо другие модные шаблоны!
Ответ №1:
index.d.ts
используется для объявления глобальных типов, и поскольку эти типы доступны во всем вашем проекте, вам не нужно импортировать его в свой компонент или экспортировать в index.d.ts
файл, просто используйте его.
Комментарии:
1. но это не работает, когда я пытаюсь использовать его внутри своего компонента, VSCode помещает под ним красную строку и говорит
Cannot find name 'IProps'.ts(2304)