[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:frontend\u002Ftypescript-modules-declarations":4,"config":235},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":133,"samples":150},"frontend","Frontend","","typescript-modules-declarations","Typescript Modules Declarations","tr",75,2925,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,103,106,109,112,115,118,121,124,127,130],{"key":19,"name":20,"count":11},"accessibility","Accessibility",{"key":22,"name":23,"count":11},"angular-change-detection","Angular Change Detection",{"key":25,"name":26,"count":11},"angular-components-lifecycle","Angular Components Lifecycle",{"key":28,"name":29,"count":11},"angular-dependency-injection","Angular Dependency Injection",{"key":31,"name":32,"count":11},"angular-directives-pipes","Angular Directives Pipes",{"key":34,"name":35,"count":11},"angular-router-forms","Angular Router Forms",{"key":37,"name":38,"count":11},"angular-testing-performance","Angular Testing Performance",{"key":40,"name":41,"count":11},"css-layout","Css Layout",{"key":43,"name":44,"count":11},"dom-browser-apis","Dom Browser Apis",{"key":46,"name":47,"count":11},"javascript-async-concurrency","Javascript Async Concurrency",{"key":49,"name":50,"count":11},"javascript-language","Javascript Language",{"key":52,"name":53,"count":11},"javascript-memory-performance","Javascript Memory Performance",{"key":55,"name":56,"count":11},"javascript-modules-bundling","Javascript Modules Bundling",{"key":58,"name":59,"count":11},"javascript-prototypes-oop","Javascript Prototypes Oop",{"key":61,"name":62,"count":11},"javascript-runtime-apis","Javascript Runtime Apis",{"key":64,"name":65,"count":11},"javascript-testing-tooling","Javascript Testing Tooling",{"key":67,"name":68,"count":11},"performance","Performance",{"key":70,"name":71,"count":11},"react-components-jsx","React Components Jsx",{"key":73,"name":74,"count":11},"react-context-state","React Context State",{"key":76,"name":77,"count":11},"react-effects-lifecycle","React Effects Lifecycle",{"key":79,"name":80,"count":11},"react-forms-suspense","React Forms Suspense",{"key":82,"name":83,"count":11},"react-hooks-state","React Hooks State",{"key":85,"name":86,"count":11},"react-rendering-performance","React Rendering Performance",{"key":88,"name":89,"count":11},"rendering-reactivity","Rendering Reactivity",{"key":91,"name":92,"count":11},"state-management","State Management",{"key":94,"name":95,"count":11},"testing","Testing",{"key":97,"name":98,"count":11},"typescript-advanced-types","Typescript Advanced Types",{"key":100,"name":101,"count":11},"typescript-generics","Typescript Generics",{"key":8,"name":9,"count":11},{"key":104,"name":105,"count":11},"typescript-narrowing-control-flow","Typescript Narrowing Control Flow",{"key":107,"name":108,"count":11},"typescript-tooling-config","Typescript Tooling Config",{"key":110,"name":111,"count":11},"typescript-type-fundamentals","Typescript Type Fundamentals",{"key":113,"name":114,"count":11},"vue-components-props","Vue Components Props",{"key":116,"name":117,"count":11},"vue-composition-api","Vue Composition Api",{"key":119,"name":120,"count":11},"vue-directives-templates","Vue Directives Templates",{"key":122,"name":123,"count":11},"vue-performance-testing","Vue Performance Testing",{"key":125,"name":126,"count":11},"vue-reactivity-system","Vue Reactivity System",{"key":128,"name":129,"count":11},"vue-router-state-management","Vue Router State Management",{"key":131,"name":132,"count":11},"web-security","Web Security",[134,138,141,144,147],{"key":135,"name":136,"count":137},"angular","Angular",450,{"key":139,"name":140,"count":137},"javascript","JavaScript",{"key":142,"name":143,"count":137},"react","React",{"key":145,"name":146,"count":137},"typescript","TypeScript",{"key":148,"name":149,"count":137},"vue","Vue",[151,169,182,195,209,222],{"id":152,"topic":9,"difficulty":153,"body":154,"options":155,"correct_key":160,"explanation":168},"019f7611-bd1a-79b0-97a0-450955ecf34e",1,"Bir TypeScript projesinde `.d.ts` dosyasının amacı nedir?",[156,159,162,165],{"key":157,"text":158},"a","Build zamanında çalışan çalıştırılabilir JavaScript içerir",{"key":160,"text":161},"b","Bir modülün API şeklini\u002Ftiplerini tarif eder, uygulama kodu içermez",{"key":163,"text":164},"c","`tsconfig.json`'ın yerini alan bir config dosyasıdır",{"key":166,"text":167},"d","Bir `.ts` dosyasının derlenmiş çıktısını saklar","Bir declaration dosyası (`.d.ts`) sadece tip bilgisi içerir — interface'ler, fonksiyon imzaları, değişken tanımları — hiç çalışma-zamanı kodu yoktur. Derleyiciye bir modülün ya da kütüphanenin şeklinin ne olduğunu söyler, böylece implementasyonu düz JavaScript ile yazılmış ya da ayrı derlenmiş olsa bile TypeScript onu kullanan kodu tip kontrolünden geçirebilir.",{"id":170,"topic":9,"difficulty":153,"body":171,"options":172,"correct_key":163,"explanation":181},"019f7611-bd1b-719d-83d8-392cfcaf1c4c","`declare` anahtar kelimesi TypeScript derleyicisine ne söyler?",[173,175,177,179],{"key":157,"text":174},"Sonraki değişkenin otomatik olarak export edilmesi gerektiğini",{"key":160,"text":176},"Kod bloğunun derleme sırasında kaldırılması gerektiğini",{"key":163,"text":178},"Bir şeyin çalışma zamanında var olduğunu, TypeScript kod üretmeden",{"key":166,"text":180},"Değişkenin tipinin `any` olarak çıkarılması gerektiğini","`declare`, ambient (örtük) bir tanımdır: derleyiciye 'bana güven, bu bir yerde çalışma zamanında var' (örn. bir script etiketiyle sağlanan bir global, ya da bir bundler'ın enjekte ettiği bir değişken) der, TypeScript bu tanım için hiç JavaScript üretmez. Bu tamamen tip-kontrolü-zamanı bir yapıdır.",{"id":183,"topic":9,"difficulty":153,"body":184,"options":185,"correct_key":157,"explanation":194},"019f7611-bd1b-78b8-837f-3c4c2ea0473e","```typescript\nimport type { User } from '.\u002Ftypes';\nimport { fetchUser } from '.\u002Fapi';\n```\nBurada düz bir `import` yerine `import type` yazmanın temel amacı nedir?",[186,188,190,192],{"key":157,"text":187},"`User`'ı sadece-tip işaretler, derlenmiş çıktıdan güvenle silinebilir",{"key":160,"text":189},"`User`'ı çalışma zamanında global bir değişken olarak kullanılabilir yapar",{"key":163,"text":191},"`User`'ın mevcut dosyadan otomatik olarak yeniden export edilmesini zorunlu kılar",{"key":166,"text":193},"Bir interface import ederken zorunlu sözdizimidir, başka hiçbir etkisi yoktur","`import type`, bir import'u açıkça sadece-tip olarak işaretler. Tipler çalışma zamanında var olmadığından, derleyici `User`'ın aynı zamanda değer olarak kullanılıp kullanılmadığını analiz etmek zorunda kalmadan bu import'u üretilen JavaScript'ten güvenle tamamen silebilir. `User`'ın bir tip olarak davranışına hiç etkisi yoktur — sadece neyin üretileceğine etkisi vardır.",{"id":196,"topic":9,"difficulty":197,"body":198,"options":199,"correct_key":166,"explanation":208},"019f7611-bd1c-7574-b950-38a60fd31d93",2,"Hiç tip tanımı olmayan, düz JavaScript ile yazılmış bir npm paketi kuruyorsun. Tipik TypeScript çözümü nedir?",[200,202,204,206],{"key":157,"text":201},"Paket TypeScript'e yeniden yazılana kadar TypeScript projeyi derlemeyi reddeder",{"key":160,"text":203},"Paket otomatik olarak `never` sayılır ve hiç import edilemez",{"key":163,"text":205},"Paketin tüm kaynak kodunu kendin `.ts` dosyalarına çevirmen gerekir",{"key":166,"text":207},"Paket için bir `.d.ts` dosyası sağla (ya da `@types\u002F...`'tan kur)","Yerleşik tipi olmayan düz-JS paketler için yaygın yaklaşım, tip tanımlarını ayrıca eklemektir — ya topluluğun bakımını yaptığı `@types\u002F\u003Cpaket>` paketi (DefinitelyTyped) ya da elle yazılmış bir `.d.ts` dosyası — böylece TypeScript, paketin kendi kaynağının TypeScript olmasına gerek kalmadan API'nin şeklini bilir.",{"id":210,"topic":9,"difficulty":197,"body":211,"options":212,"correct_key":163,"explanation":221},"019f7611-bd1d-7086-bac5-4212e9f83ee9","```typescript\n\u002F\u002F global.d.ts\ndeclare const __APP_VERSION__: string;\n\n\u002F\u002F app.ts\nconsole.log(__APP_VERSION__.toUpperCase());\n```\n`__APP_VERSION__` aslında build zamanında bundler tarafından enjekte ediliyor ve TypeScript kaynağında hiçbir yerde atanmıyor. `app.ts` derlenince ne olur?",[213,215,217,219],{"key":157,"text":214},"Derleme hatası: `__APP_VERSION__` bir değer atanmadan kullanılıyor",{"key":160,"text":216},"Çalışma zamanı hatası, çünkü TypeScript değişken undefined ise fırlatan bir kontrol ekler",{"key":163,"text":218},"Derlenir — `declare`, değişkenin başka yerde var olduğunu söyler, atama gerekmez",{"key":166,"text":220},"TypeScript derleme sırasında `__APP_VERSION__`'ı otomatik olarak `'unknown'` string'iyle değiştirir","`declare const`, ambient bir tanımdır — `__APP_VERSION__`'ın çalışma zamanında bir yerde (burada, bundler tarafından enjekte edilerek) `string` olarak var olduğunu iddia eder, TypeScript'in bunun için bir atama gerektirmesine ya da üretmesine gerek kalmadan. Derleyici tanıma güvenir ve `.toUpperCase()`'i `string`'e karşı tip kontrolünden geçirir. TypeScript gerçek çalışma-zamanı değerini doğrulamaz ya da sağlamaz.",{"id":223,"topic":9,"difficulty":197,"body":224,"options":225,"correct_key":157,"explanation":234},"019f7611-bd1d-78f8-8f48-d4f49fb3c2c4","Bir interface için `export` ile `export type` arasındaki temel fark nedir?",[226,228,230,232],{"key":157,"text":227},"`export type` silinmeyi garanti eder, ama interface'lerin zaten çalışma-zamanı yoktur",{"key":160,"text":229},"`export type`, interface'i hem tip hem çalışma-zamanı değeri olarak kullanılabilir yapar",{"key":163,"text":231},"Interface'ler için tek başına `export` geçersiz sözdizimidir; `export type` zorunludur",{"key":166,"text":233},"`export type`, interface'i otomatik olarak bir `type` alias'a dönüştürür","Interface'ler zaten çalışma-zamanı temsili olmayan saf tip-seviyesi yapılardır, bu yüzden `export` ile `export type` bir interface için pratikte aynı davranır — ikisi de silinir. `export type` esas olarak, tip ile değer arasında belirsiz olabilecek isimlerin yeniden export'unda (örn. sadece tip olarak kullanılan bir sınıfı yeniden export etmek) anlamlı şekilde farklılaşır.",{"fields":236,"seniorities":410,"interview_shapes":411,"locales":416,"oauth":418,"question_count":421,"coach_enabled":422,"jd_match_enabled":422},[237,262,270,287,311,324,343,362,384,391,397,404],{"key":238,"name_tr":239,"name_en":239,"sort":153,"specializations":240},"backend","Backend",[241,244,247,250,253,256,259],{"key":242,"name":243,"field":238},"general","Genel",{"key":245,"name":246,"field":238},"go","Go",{"key":248,"name":249,"field":238},"python","Python",{"key":251,"name":252,"field":238},"java","Java",{"key":254,"name":255,"field":238},"csharp","C#\u002F.NET",{"key":257,"name":258,"field":238},"nodejs","Node.js",{"key":260,"name":261,"field":238},"php","PHP",{"key":5,"name_tr":6,"name_en":6,"sort":197,"specializations":263},[264,265,266,267,268,269],{"key":242,"name":243,"field":5},{"key":139,"name":140,"field":5},{"key":145,"name":146,"field":5},{"key":142,"name":143,"field":5},{"key":148,"name":149,"field":5},{"key":135,"name":136,"field":5},{"key":271,"name_tr":272,"name_en":272,"sort":273,"specializations":274},"fullstack","Fullstack",3,[275,276,277,278,279,280,281,282,283,284,285,286],{"key":242,"name":243,"field":271},{"key":245,"name":246,"field":238},{"key":248,"name":249,"field":238},{"key":251,"name":252,"field":238},{"key":254,"name":255,"field":238},{"key":257,"name":258,"field":238},{"key":260,"name":261,"field":238},{"key":139,"name":140,"field":5},{"key":145,"name":146,"field":5},{"key":142,"name":143,"field":5},{"key":148,"name":149,"field":5},{"key":135,"name":136,"field":5},{"key":288,"name_tr":289,"name_en":289,"sort":290,"specializations":291},"devops-cloud","DevOps \u002F Cloud",4,[292,293,296,299,302,305,308],{"key":242,"name":243,"field":288},{"key":294,"name":295,"field":288},"aws","AWS",{"key":297,"name":298,"field":288},"gcp","GCP",{"key":300,"name":301,"field":288},"azure","Azure",{"key":303,"name":304,"field":288},"kubernetes","Kubernetes",{"key":306,"name":307,"field":288},"terraform","Terraform",{"key":309,"name":310,"field":288},"linux","Linux",{"key":312,"name_tr":313,"name_en":313,"sort":314,"specializations":315},"ai-engineer","AI Engineer",5,[316,317,318,321],{"key":242,"name":243,"field":312},{"key":248,"name":249,"field":312},{"key":319,"name":320,"field":312},"llm-rag","LLM\u002FRAG",{"key":322,"name":323,"field":312},"mlops","MLOps",{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"database","Veritabanı","Database",6,[330,331,334,337,340],{"key":242,"name":243,"field":325},{"key":332,"name":333,"field":325},"postgresql","PostgreSQL",{"key":335,"name":336,"field":325},"mysql","MySQL",{"key":338,"name":339,"field":325},"mongodb","MongoDB",{"key":341,"name":342,"field":325},"redis","Redis",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"mobile","Mobil","Mobile",7,[349,350,353,356,359],{"key":242,"name":243,"field":344},{"key":351,"name":352,"field":344},"ios-swift","iOS (Swift)",{"key":354,"name":355,"field":344},"android-kotlin","Android (Kotlin)",{"key":357,"name":358,"field":344},"flutter","Flutter",{"key":360,"name":361,"field":344},"react-native","React Native",{"key":363,"name_tr":364,"name_en":365,"sort":366,"specializations":367},"security","Güvenlik","Security",8,[368,369,372,375,378,381],{"key":242,"name":243,"field":363},{"key":370,"name":371,"field":363},"appsec","AppSec",{"key":373,"name":374,"field":363},"offensive-pentest","Offensive \u002F Pentest",{"key":376,"name":377,"field":363},"cloud-security","Cloud Security",{"key":379,"name":380,"field":363},"devsecops","DevSecOps",{"key":382,"name":383,"field":363},"blue-team-incident","Blue Team \u002F Incident",{"key":385,"name_tr":386,"name_en":387,"sort":388,"specializations":389},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[390],{"key":242,"name":243,"field":385},{"key":392,"name_tr":393,"name_en":393,"sort":394,"specializations":395},"data-engineer","Data Engineer",10,[396],{"key":242,"name":243,"field":392},{"key":398,"name_tr":399,"name_en":400,"sort":401,"specializations":402},"game-dev","Oyun Geliştirme","Game Development",11,[403],{"key":242,"name":243,"field":398},{"key":405,"name_tr":406,"name_en":406,"sort":407,"specializations":408},"ml-engineer","ML Engineer",12,[409],{"key":242,"name":243,"field":405},[14,15,16],{"junior":412,"mid":414,"senior":415},{"questions":413,"median_sec":3},20,{"questions":413,"median_sec":3},{"questions":413,"median_sec":3},[10,417],"en",[419,420],"google","github",21750,true]