Typescript 如何声明两个不可分配的类型?

Typescript 如何声明两个不可分配的类型?,typescript,Typescript,我有一个FFI绑定,有几个地方使用了void*。我想区分一下打字稿方面的内容。我所做的是: interface Struct1Ptr extends Buffer {}; interface Struct2Ptr extends Buffer {}; var x: Struct1Ptr; var y: Struct2Ptr; 我想使这些类型不可分配,这样当我尝试分配x=y或y=x或使用错误的类型作为函数的参数时,就会发出错误信号。Typescript对所有内容都使用结构化类型,因此实际上必须使

我有一个FFI绑定,有几个地方使用了
void*
。我想区分一下打字稿方面的内容。我所做的是:

interface Struct1Ptr extends Buffer {};
interface Struct2Ptr extends Buffer {};
var x: Struct1Ptr;
var y: Struct2Ptr;

我想使这些类型不可分配,这样当我尝试分配
x=y
y=x
或使用错误的类型作为函数的参数时,就会发出错误信号。

Typescript对所有内容都使用结构化类型,因此实际上必须使它们在结构上不同,例如:

interface Struct1Ptr extends Buffer { _isStruct1: void };
interface Struct2Ptr extends Buffer { _isStruct2: void };
var x: Struct1Ptr;
var y: Struct2Ptr;

现在它不可分配给基类,这可能是一件好事,也可能不是一件好事。如果有人请求缓冲区,Struct1Ptr和Struct2Ptr都可分配给它。当然,情况并非如此。非常期待,不是吗?非常期待,尽管我还需要一个
NULL
的概念,它可以分配给
x
y
,并且有
ref.NULL
类型的
Buffer
。这基本上是在Typescript中模拟C语言语义的一次尝试。