类型“FetchData[]”不可分配给类型“string”(Ionic React Typescript)

问题描述 投票:0回答:1

response.body是文件的base64字符串。如何将其保存到字符串变量中?

enter image description here

fetchCustom(store.apiURL, {
            trtyp: 'file_download',
            seskey: store.userSessionKey,
            id: item.iddoc
        }).then(response => {
            const data = response.body as FetchData[];
            console.log('gotten base64', data);

            let base64File:string = data;
            
            Filesystem.writeFile({
                path: "filename.txt",
                data: base64File, //"base64 data",
                directory: Directory.Documents,
            }).then(response => {
            
            }).catch(error => {
                console.log('error a', error.message);
            });
        
        }).catch(error => {
            console.log('error b', error.message);
        });
reactjs typescript ionic-framework
1个回答
0
投票

您似乎正在尝试将 FetchData[] 类型的数组分配给字符串变量 base64File,这会导致 TypeScript 错误。

如果response.body确实是一个Base64编码的字符串,作为FetchData[]中更大结构的一部分,您应该首先访问保存Base64字符串的每个FetchData项的特定属性。例如,如果每个 FetchData 项都有一个属性 base64,您可能需要从数组中提取此属性,或者如果您只对第一项感兴趣(假设 API 始终只返回一个包含文件数据的项),则您可以可以做:

fetchCustom(store.apiURL, {
    trtyp: 'file_download',
    seskey: store.userSessionKey,
    id: item.iddoc
}).then(response => {
    // Assuming 'base64' is the property containing the Base64 string
    // and you are expecting only one item in the array.
    const base64File: string = response.body[0].base64;

    console.log('gotten base64', base64File);

    Filesystem.writeFile({
        path: "filename.txt",
        data: base64File, // Use the extracted Base64 string
        directory: Directory.Documents,
    }).then(response => {
        console.log('File written', response);
    }).catch(error => {
        console.log('error writing file', error.message);
    });

}).catch(error => {
    console.log('error fetching data', error.message);
});

请根据 FetchData[] 数组中对象的实际结构将属性名称 base64 调整为合适的值。另外,请确保在数组为空或属性不存在的情况下进行正确的错误处理。

希望这对您有用。

© www.soinside.com 2019 - 2024. All rights reserved.