The problem here is Gutenberg seems to correct all single apostrophes to double in classic editors.
I am surprised this happens, but you can confirm it by adding some HTML with '' and "" to the classic block, and save + reload the editor.
It'll now show all '' converted to "".
This then forcedly breaks the ShortCode, because it thinks a new attribute comes when a "" appears, but in fact, it's just a Class or other HTML attribute.
Usually, you can solve that by using "" only for ShortCode attributes and '' for nested, but Gutenberg strips and corrects the syntax.
The only format that will work is this:
[types field="file" title="<i class='fas fa-camera'></i>"][/types]
But if you use Gutenberg, no matter in what block, the above single '' will convert to "" and break the output.
In this case, for now, you have to disable Gutenberg or use another approach to create a link to a file with an icon.
Disabling Gutenberg can be done for Custom Post types in Toolset > Post Types > Edit, or globally with this in your functions.php:
add_filter( 'use_block_editor_for_post_type', '__return_false' );
You can also paste the example I show above into a "ShortCode block".
That will work, but you need to follow that precise syntax and use only ShortCode Blocks, no other blocks if you use Gutenberg to insert such nested structures.
I will escalate the problem, but there is likely little we can do, since it happens with native Gutenberg, out of the box.