'string' 类型的参数不可分配给 'Pick<IJobs, "name">' 类型的参数
Argument of type 'string' is not assignable to parameter of type 'Pick<IJobs, "name">'
为什么会出现此错误?
Argument of type 'string' is not assignable to parameter of type 'Pick<IJobs, "name">'.
Type 'string' is not assignable to type 'Pick<IJobs, "name">'
模拟数据:
export const Jobs: IJobs[] = [
{
id: '1',
name: 'Trader',
available: true
},
{
id: '2',
name: 'Seller',
available: true
},
{
id: '3',
name: 'Manager',
available: false
},
{
id: '4',
name: 'Cleaner',
available: false
}
];
型号:
export interface IJobs {
id: string;
name: 'Trader' | 'Seller' | 'Manager' | 'Cleaner';
available: boolean;
}
Main.tsx
const handleSetJobsAndOpenModal = (jobs: Pick<IJobs, 'name'>) => {
setCurrentJobs(jobs);
};
const scrollData = useCallback(() => (
<View style={s.containerMap}>
{
Jobs.map(((el) => (
<Pressable onPress={() => handleSetJobsAndOpenModal(el.name)} style={s.Btn} key={el.id}>
<Text>...</Text>
</Pressable>
)))
}
</View>
), [])
错误出现在 " () => handleSetJobsAndOpenModal(el.name) <-"
我做错了什么?
您正在从 IJobs
中选择 name
。这将产生 key-value pair
.
因此,类型 Pick<IJobs, 'name'>
期望它接收一个对象,该对象具有名为 name
的键和值为 'Trader' | 'Seller' | 'Manager' | 'Cleaner'
之一的值。
错误可按如下方式解决
handleSetJobsAndOpenModal({name: el.name})
如果你只想要纯字符串,那么我建议你按如下方式分隔类型。
export type JobName = 'Trader' | 'Seller' | 'Manager' | 'Cleaner'
export interface IJobs {
id: string;
name: JobName;
available: boolean;
}
然后,如下使用。
const handleSetJobsAndOpenModal = (jobs: JobName) => {
setCurrentJobs(jobs);
};
const scrollData = useCallback(() => (
<View style={s.containerMap}>
{
Jobs.map(((el) => (
<Pressable onPress={() => handleSetJobsAndOpenModal(el.name)} style={s.Btn} key={el.id}>
<Text>...</Text>
</Pressable>
)))
}
</View>
), [])
为什么会出现此错误?
Argument of type 'string' is not assignable to parameter of type 'Pick<IJobs, "name">'.
Type 'string' is not assignable to type 'Pick<IJobs, "name">'
模拟数据:
export const Jobs: IJobs[] = [
{
id: '1',
name: 'Trader',
available: true
},
{
id: '2',
name: 'Seller',
available: true
},
{
id: '3',
name: 'Manager',
available: false
},
{
id: '4',
name: 'Cleaner',
available: false
}
];
型号:
export interface IJobs {
id: string;
name: 'Trader' | 'Seller' | 'Manager' | 'Cleaner';
available: boolean;
}
Main.tsx
const handleSetJobsAndOpenModal = (jobs: Pick<IJobs, 'name'>) => {
setCurrentJobs(jobs);
};
const scrollData = useCallback(() => (
<View style={s.containerMap}>
{
Jobs.map(((el) => (
<Pressable onPress={() => handleSetJobsAndOpenModal(el.name)} style={s.Btn} key={el.id}>
<Text>...</Text>
</Pressable>
)))
}
</View>
), [])
错误出现在 " () => handleSetJobsAndOpenModal(el.name) <-"
我做错了什么?
您正在从 IJobs
中选择 name
。这将产生 key-value pair
.
因此,类型 Pick<IJobs, 'name'>
期望它接收一个对象,该对象具有名为 name
的键和值为 'Trader' | 'Seller' | 'Manager' | 'Cleaner'
之一的值。
错误可按如下方式解决
handleSetJobsAndOpenModal({name: el.name})
如果你只想要纯字符串,那么我建议你按如下方式分隔类型。
export type JobName = 'Trader' | 'Seller' | 'Manager' | 'Cleaner'
export interface IJobs {
id: string;
name: JobName;
available: boolean;
}
然后,如下使用。
const handleSetJobsAndOpenModal = (jobs: JobName) => {
setCurrentJobs(jobs);
};
const scrollData = useCallback(() => (
<View style={s.containerMap}>
{
Jobs.map(((el) => (
<Pressable onPress={() => handleSetJobsAndOpenModal(el.name)} style={s.Btn} key={el.id}>
<Text>...</Text>
</Pressable>
)))
}
</View>
), [])