Проблема была вызвана тем, что я применил метод then
к своему типу Result<T, E>
. Это создало конфликт, когда я попытался вернуть тип из метода async
, потому что TypeScript продолжал предполагать, что мой Result<T, E>
был псевдо- Promise
, и пытался развернуть его, вызвав .then()
.
У TypeScript обычно гораздо более понятная ошибка для ситуации такого типа:
TS1058 Тип возвращаемого значения асинхронной функции должен быть допустимым обещанием или не должен содержать вызываемый тогда член.
blockquote>Но это становится намного более запутанным, когда метод принимает функцию в качестве аргумента, поскольку именно так выглядит сигнатура метода фактического
Promise
, и это становится еще более запутанным с задействованными обобщениями. [ 1110]
Лучшим подходом является создание внепроцессного COM-сервера, который обертывает вашу 32-битную DLL. Затем вы можете вызвать это из 64-битного кода.
Вот объяснение основных концепций.
What you need to do is create two processes communicating with IPC. This way, one can be 32 bit, and one can be 64 bit. You need to create a 32 program which links with the COM object and exposes its API through some IPC mechanism such as a named pipe. This way your .NET program can access it from another process.