subscribeSubject() {
const subject = new Subject();
subject.subscribe({
next: (v1: number) => console.log('v1=',v1)
});
subject.subscribe({
next: (v2: number) => console.log('v2=',v2)
});
const observable = from([1,2,3]);
observable.subscribe(subject);
}
在Typescript中,我可以将上述观察者的next方法的参数声明为字符串。但我创造的可观察物会发出数字;我想知道在这种情况下会发生什么,希望Typescript告诉我我不能向接受字符串的观察者发送数字。但事实并非如此。它让我来编译。当我运行它时,我发现观察者打印出了我发出的任何东西(我将数字切换为字符“a”、“b”和“c”),然后它通过了
v1=a v2=a v1=b v2=b v1=c v2=c
).
然后我想知道为什么Typescript会允许这样做。这就是我的问题所在。上述情况是否为Typescript
不能
确定将向采用字符串的方法发送数字?它怎么知道?是的,我正在创建一个发出数字的可观察对象,但是在那一行,编译器无法告诉我如何使用它。我可能只是把它们发射到不同的物体上,那些确实需要数字的物体。是的,主体确实最终订阅了可观察对象,但在这一点上,我想知道对于Typescript来说,这是否太复杂了(我可以看到它在一些复杂的应用程序中变成了一个很深的rabit洞),所以它就不会了。毕竟,这条线
observable.subscribe(subject)
不必马上就来
const observable = from(['a','b','c'])
. 它可以位于应用程序中的任何位置。简言之,这是一个可以解决的问题。
因此,我的问题是:我是否正确理解了上述内容?这个问题是编译器无法解决的吗?