Closed
Description
I'm expecting this to not be a bug but I can't seem to figure out what else it could be.
Basically I'm trying to create a (TLS)Socket
instance using the core Node.js net
or tls
modules depending on a condition.
Instantiating them by directly referencing the module works fine but whenever I introduce a level of indirection by conditionally defining the TCP client module, compilation breaks.
Code
import net from 'net';
import tls from 'tls';
const socketA = net.connect({ host: 'localhost', port: 1234 });
const socketB = tls.connect({ host: 'localhost', port: 1234 });
const protocol = process.argv[2];
const client = protocol === 'https' ? tls : net;
const socketC: net.Socket | tls.TLSSocket = client.connect({ host: 'localhost', port: 1234 });
console.log(socketA, socketB, socketC);
Expected behavior:
Successful compilation.
Actual behavior:
This expression is not callable.
Each member of the union type
'{ (options: NetConnectOpts, connectionListener?: (() => void) | undefined): Socket;
(port: number, host?: string | undefined, connectionListener?: (() => void) | undefined): Socket;
(path: string, connectionListener?: (() => void) | undefined): Socket; } | { ...; }'
has signatures, but none of those signatures are compatible with each other.
12 const socketC = client.connect({ host: 'localhost', port: 443 });
~~~~~~~
Playground Link:
Related Issues:
Metadata
Metadata
Assignees
Labels
No labels