react native - Typescript isteğe bağlı zincirleme hatası: İfade bekleniyor.ts(1109)


Typescript + React Native'de isteğe bağlı zincirlemeyi yapmaya çalışıyorum.

Diyelim ki aşağıdaki arayüzlere sahibim:

interface Bar {
  y: number
}

interface Foo {
  x?: Bar
}

ve aşağıdakileri çalıştırmayı deniyorum:

 const test: Foo = {x: {y: 3}};
 console.log(test.x?.y);

VSCode, ?. altında şu hatayı gösterecektir: İfade bekleniyor.ts(1109)

Bunun neden olduğunu veya bunu nasıl düzeltebileceğimi biliyor musunuz? Teşekkürler.

Cevap #1

TypeScript 3.7 yayımlandı, ancak stabil VS Code daha eski bir sürüm kullanıyor.

⌘ + Shift + p tuşlarına basmayı deneyin ve Select TypeScript Version seçeneğini seçin. Eğer 3.7+ değilse, sorun bundan kaynaklanıyor. En kolay çözüm ms-vscode.vscode-typescript-next eklentisini yüklemektir. Bu, VS Code'un kullanması için bir günlük TypeScript sürümü sağlayacaktır (Bilginiz olsun, VS Code'u yeniden başlatmanız gerekebilir).

VS Code varsayılan olarak TypeScript 3.7+ aldığında uzantıyı kaldırmayı hatırlamak isteyeceksiniz.

Daha fazla ayrıntı için https://code.visualstudio.com/docs/typescript/typescript-compiling#_using-newer-typescript-versions adresine bakın.

Cevap #2

Merak edenler için, isteğe bağlı zincirleme ( ? operatörü) artık Ekim 2019 itibarıyla TypeScript 3.7 (Beta) sürümünde kullanılabilir. Bu sürümü aşağıdaki komutu çalıştırarak yükleyebilirsiniz:

npm install typescript@beta

İşte operatörü bu şekilde kullanabilirsiniz, sürüm notlarında açıklandığı gibi.

let x = foo?.bar.baz();

Hangisi eşdeğerdir

let x = (foo === null || foo === undefined) ?
    undefined :
    foo.bar.baz();

Opsiyonel Zincirleme'nin yanı sıra, diğer ilginç özellikler arasında Nullish Coalescing ( ?? operatörü) bulunmaktadır.

Güncelleme (Kasım 2019)

TypeScript'in isteğe bağlı zincirleme özelliği artık resmi olarak kullanılabilir. TypeScript'in en son sürümünü yüklemek, bu harika yeni özelliklere erişmenizi sağlamalıdır.

npm install typescript

VS Code kullananlar için, Austin'in yeni TypeScript sürümüyle çalışmasını sağlama konusundaki mükemmel cevabına bakınız.

WebStorm ile çalışanlar için, projenizde yüklü olan TypeScript sürümünü kullanacak şekilde TypeScript'i yapılandırmanız gerekecek.

Preferences -> Languages & Frameworks -> TypeScript

Ayrıca, eğer daha eski bir WebStorm sürümü kullanıyorsanız, Nullish Coalescing operatörünü (??) kullanmaya çalıştığınızda bir hata/uyarı ile karşılaşabilirsiniz. Bunu düzeltmek için WebStorm 2019.2.4 sürümünü veya yukarıdakinden daha yeni herhangi bir sürümü yüklemeniz gerekecektir.

İlgili makaleler