Saya memiliki fungsi gaya ES6 yang didefinisikan menggunakan komposisi fungsi dengan asyncPipe
.
import { getItemAsync } from 'expo-secure-store';
const asyncPipe = (...fns) => x => fns.reduce(async (y, f) => f(await y), x);
const getToken = () => getItemAsync('token');
const liftedGetToken = async ({ ...rest }) => ({
token: await getToken(),
...rest,
});
const liftedFetch = ({ body, route, token, method = 'GET' } = {}) =>
fetch(route, {
...(body && { body: JSON.stringify(body) }),
headers: {
'Content-Type': 'application/json',
...(token && { Authorization: `Bearer ${token}` }),
},
method,
});
const json = res => res.json();
/**
* @method
* @param {Object} fetchSettings the settings for the fetch request
* @param {Object} fetchSettings.body the body of the request
* @param {string} fetchSettings.route the URL of the request
* @param {string} fetchSettings.method the method of the request
* @param {string} fetchSettings.token should only be used for testing and unauthenticated requests
*/
const request = asyncPipe(liftedGetToken, liftedFetch, json);
Seperti yang Anda lihat, saya mencoba menambahkan deskripsi JSDoc ke dalamnya. Tetapi ketika saya menggunakannya di mana saja editor saya, VSCode, tidak menyarankan parameternya. Bagaimana Anda mendeklarasikan fungsi semacam ini dengan JSDoc? Dan bagaimana cara agar params agar fungsi ini berfungsi dengan Intellisense?