問題タブ [optional-chaining]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - TypeScript がオプションのチェーン演算子の後に「'undefined'.ts(2722) である可能性があるオブジェクトを呼び出すことができません」というエラーを表示するのはなぜですか?
このステイホーム期間中、私は TypeScript に飛び込むことに決め、いくつかの基本的なデータ構造を実装することでそれを実践し始めました。カスタム ノードを使用するカスタム スタックを実装しようとしています。
私の StackNodes は次のように定義されています。
そして実際のスタック:
ここでの問題は、pop-method のオプションの連鎖演算子の行です。this.top = this.top?.next()
私が理解したことは、式は次this.top?.next()
と同等でなければならないということです
(this.top === null || this.top === undefined)? undefined : this.top.next()
しかし、私はまだエラーが発生します
おそらく「未定義」のオブジェクトを呼び出すことはできません.ts(2722)
その段階でもう未定義であってはならないにもかかわらず、呼び出しが行われたとき。
なぜですか?ここで何が欠けていますか?StackNode.nxt と Stack.top の両方を未定義にすることができます。私はこのような古い方法でそれをやろうとしました:
しかし、私はまだ同じエラーをthis.top
受け取ります.
これがどのように機能するかというと、空のスタックからポップすると pop メソッドは未定義を返し、最後の要素をポップすると、その次の未定義の要素がスタックの一番上に設定されます。
TS 3.8.3 を使用しています