#javascript #typescript
#javascript #typescript
Вопрос:
использование Directus SDK. Я пытаюсь выполнить функцию, которая делает это, я просто хочу изменять тип (CollectionsNameChanges) при каждом вызове функции
const directus = new Directus<CollectionsNameChanges>('https://mysamelink/');
Для этого я создал эту функцию
connection.ts
//here I want to get a new Type, that's why I am passing title as a parameter
export function DirectusConnection(title: any) {
return new Directus<typeof title>('https://mysamelink/');
}
myList.ts
interface MyTypes {
id: number;
}
export async function myFunction(){
type CollectionsNameChanges= {
//collection name
nameofCollection: MyTypes;
};
//here I am calling my function with the type
const directus = DirectusConnection(<CollectionsNameChanges>);
const myList = await directus.items('nameofCollection').readMany();
return myList
}
Но я получаю сообщение об ошибке в typescript, сообщающее мне, что это выражение ожидалось.
здесь:
const directus = DirectusConnection(<DirectusCollection>);
Ответ №1:
Вы должны использовать общий параметр:
export function DirectusConnection<T>() {
return new Directus<T>('https://mysamelink/');
}
// or if you want to use a parameter as that generic type
// but `title` isn't being used anywhere in this function
export function DirectusConnection<T>(title: T) {
return new Directus<T>('https://mysamelink/');
}
// then later:
const directus = DirectusConnection<CollectionsNameChanges>();
Комментарии:
1. получение типа ‘T’ не удовлетворяет ограничению ‘TypeMap’.(параметр типа) T в DirectusConnection<T>(): Directus<T>
2. попробуйте изменить его на <T расширяет TypeMap> .