npx tsc –init –package json oluşturur
npm install typescript live-server –save-dev — live server ve typescript kurulmasını sağlar.
“start”: “npm run build && live-server” –otomatik olarak npm start ile başlamasını sağlar
ts.config json yapılandırma
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}
export type User = { id: number; name: string; email: string };
// Debounce fonksiyonu
export function debounce<T extends (…args: any[]) => void>(fn: T, delay: number) {
let timer: number | undefined;
return (…args: Parameters<T>) => {
if (timer) clearTimeout(timer);
timer = window.setTimeout(() => fn(…args), delay);
};
}
// Kullanıcı filtreleme (async)
export async function filterUsers(query: string): Promise<User[]> {
if (query.length < 2) return [];
const q = query.toLowerCase();
const res = await fetch(“../users.json”);
const users: User[] = await res.json();
return users.filter(u =>
u.name.toLowerCase().includes(q) || u.email.toLowerCase().includes(q)
);
}
const input = document.getElementById(“searchBox”) as HTMLInputElement;
const results = document.getElementById(“results”) as HTMLFormElement;
export async function showResults(users :User[]) {
results.innerHTML = “”;
users.forEach(u => {
const li = document.createElement(“li”);
li.textContent = `${u.name} – ${u.email}`;
results.appendChild(li);
});
}
const debouncedSearch = debounce(async (e) => {
const query = e.target.value;
const filtered = await filterUsers(query);
showResults(filtered);
}, 300);
input.addEventListener(“input”, debouncedSearch);
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}
}
}
{
“compilerOptions”: {
“target”: “es6”,
“module”: “es6”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“strict”: true,
“esModuleInterop”: true,
“resolveJsonModule”: true,
“moduleResolution”: “node”
}
}

Comments are closed.