Ana içeriğe atla

Typescript window objesine property ve metod eklemek

Typescript bir çok konuda başarılı bir araç olmasına rağmen, javascript'te rahatlıkla yaptığımız şeyler konusunda katı kurallar getirebiliyor. Bu makalede window objesine nasıl property ve metot ekleyebileceğimizi gösterdim.

Mesela, window objesi üzerine javascript'te aşağıdaki gibi bir kod yazmak çok mümkünken, Typescript'te konu biraz daha sıkıntılı:

// Javascript 
window.myProperty = 'demo';

// Typescript 
(window as any).myProperty = 'demo';

Ancak bu noktada Typescript için bir ayarlama yaparak bu durumdan kurtulabilirsiniz : 1. shims-window.d.ts isminde bir dosya oluşturun. 2. Aşağıdaki kodu dosyanın içine yapıştırın:
export {}; // this file needs to be a module

declare global {
  interface Window {
    myProperty?: string;
  }
}
Window interface'i içine istediğiniz property ve metot'u ekleyebilirsiniz. Ayrıca kendi tiplerinizi de kullanmanız mümkün. Örnek olarak User isminde bir tipiniz var ise :
import { User } from './user';
export {}; // this file needs to be a module

declare global {
  interface Window {
    user?: User;
  }
}

Yorumlar

Bu blogdaki popüler yayınlar

Vue.js, Vuetify, Typescript ve Jest ile unit test yazmak

Vue.js, Vuetify, Typescript ve Jest ile unit test yazmak Writing unit test with Vue.js, Vuetify, Typescript and Jest
Geliştirmekte olduğumuz proje kapsamında Vue.js, Vuetify ve Typescript ile çalışmaktayız. Burada unit test yazmak istediğimizde biraz araştırma yapmak, ve çıkan problemlerle boğuşmak zorunda kaldık. Bu yazıda bulduğumuz çözümler ile konuyu anlatmak istiyorum :
Öncelikle unit test aracı olarak jest kullanmaya karar verdik. Vue.js Cli tarafından öncelik Mocka'ya verilmiş olsada bizim projemizde onu açlıştırmak hiç kolay olmadı. Sıkıntı typescript kullanmamızdan kaynaklanmakta. bu iş için kullanacağımız araçların hepsi typescript destekli değil maalesef. Gelelim adımlara :
1. npm ile bazı paketleri projemize eklememiz lazım :
npm i -D jest@23.6.0 jsdom@13.2.0 jsdom-global@3.0.2 ts-jest@23.10.5 @vue/test-utils @vue/cli-plugin-unit-jest @vue/cli-plugin-typescript

Burada önemli nokta jest sürümünün 23'de kalması. Çünkü ts-jest şu anda (11.02.2019 itibari ile) sadece je…

Babamın durumu

Babam Mart 2017 de zatüreden hastanede yatmıştı. Bu sırada ciğerlerde bir kanser görülmüş. Bu kanserin ne olduğu ile ilgili tetkikler de başlamış. Zatüreden sonra hemen kanser ile ilgili işlemlere yoğunlaşıldı. Kalçada görülen bir kitle vardı. Ona da baktılar ama temiz çıktı. Kanser tedavisi olan kemoterapi hemen başladı. 14 haziranda ilk kemoterapi dozunu aldı. İlk günler iyiydi. 19 hazirandan itibaren durumu kötülemeye başlamış. En son 21 Haziran gecesi çok kötü olunca önce Torbalı Devlet Hastanesine götürüldü. Burada vücudundaki sodyum'un çok azalmış olmasından dolayı hemen sodyum takviyesi yapıldı. Sodyum takviyesi ancak bir oranda etkili olduktan sonra yine kötü duruma geri dönüş yapmış. Bu yüzden Bozyaka araştırma hastanesine sevkedildi. Bozyaka da önce dahiliye yoğun bakıma alındı. Ancak burada bir süre kalbi durmuş ve kalp masajı ile geri getirmişler. Sonrada genel yoğun bakıma aldılar.
Şu an yoğun bakımda hipotermi durumunda tutuluyor. Bu uygulanan tedavilerden biri. Diğer…

Azure Cosmos DB Emulator Çalışmıyor.

Merhaba, Bugün Azure Cosmos DB'ye bir göz attım. Kullanımını anlamak için kendi bilgisayarımıza bir emulator(Azure Cosmos DB Emulator) kurabiliyoruz. Bunu kurup çalıştırdığımda DocumentDB.StartupEntryPoint.exe'nin hata verdiğini gördüm. Hatanın detayını eventviewer'dan şöyle gördüm: