尝试在我的React / TypeScript组件中引用模拟数据对象,同时还将匹配类型作为Props导入
我正在构建一个React / TypeScript组件,在其中导入要使用的模拟数据对象。由于我使用的是TypeScript,所以我还有一个单独的文件,其中包含模拟数据每个元素的类型。
然后我将模拟数据和类型定义都导入到我的主要组件中。
我仍在学习TypeScript,我遇到的问题是我的模拟数据出错,指出它是declared but never used
,而我的contactGroups却遇到类型错误,说Cannot find name 'ContactGroup'.ts(2304)
Property 'contactGroups' of exported interface has or is using private name 'ContactGroup'.ts(4033)
我不知道为什么。
这是我的模拟数据以及下面的类型和主要组件。我尝试了各种方法将所有内容传递到我的组件中,但最终得到了类似的错误,指出已声明某些内容,但该对象类型从未使用过或不存在。
Mock Data
export const contacts = {
count: 1,
contactGroups: [
{
contactGroup: 'Family',
count: 17,
contacts: [
{
member: 'Uncle'
lastName: 'BILLIARDS',
firstName: 'BENJAMIN',
addresses: [
{
addressLine1: '123 FAMILY ST',
addressLine2: 'APT 1208',
city: 'ATLANTA',
state: 'GEORGIA',
zipCode: '12345',
},
{
addressLine1: '456 WORKING BLVD',
addressLine2: '',
city: 'ATLANTA',
state: 'GEORGIA',
zipCode: '12345',
}
]
}
]
}
]
}
TYPE DEFINITIONS
export type Contacts = {
count: number;
contactGroups: ContactGroup[];
};
export type ContactGroup = {
contactGroup: string;
count: number;
contacts: Contact[];
};
export type Contact = {
member: string;
lastName: string;
firstname: string;
addresses: Address[];
};
export type Address = {
addressLine1: string;
addressLine2: string;
city: string;
state: string;
zipCode: string;
};
Main Component
import React from 'react';
import { contacts } from '../../mock-data/contacts-mock-data';
import { Contacts } from '../../types/contacts';
type Props = {
contacts: Contacts[];
contactGroups: ContactGroup[];
};
export const ContactGroupsSection = (props: Props) => {
const { contactGroups, contacts } = props;
console.log(contacts)
let groups = () => {
for (let i = 0; i < props.contactGroups.length; i++) {
console.log(contactGroups[i]);
}
};
return <div>{groups}</div>;
};
回答如下:我看到一些问题。
首先,您的模拟数据中有语法错误。
{
member: 'Uncle' // <- missing comma here
lastName: 'BILLIARDS',
firstName: 'BENJAMIN',
找不到名称'ContactGroup'.ts(2304)
您正在使用ContactGroup
而不导入它。您需要导入您在代码中显式使用的每种类型。
import { Contacts, ContactGroup } from '../../types/contacts';
已声明但从未使用过
我相信这行正在发生:
import { contacts } from '../../mock-data/contacts-mock-data';
您实际上并没有在任何地方使用导入的联系人,因为您在组件中这样做:
const { contactGroups, contacts } = props;
哪个会创建一个现在的局部变量,该变量会遮盖导入的变量。我不确定您打算如何使用此模拟数据,但实际上需要在某处使用导入的模拟数据。
导出的接口的属性'contactGroups'具有或正在使用私有名称'ContactGroup'.ts(4033)
我不知道这是什么意思,或者您确切地在哪里看到它,但是导入类型时它可能是固定的。
发布评论