TypeScript
Next.js, React uygulamanızı oluşturmak için TypeScript öncelikli bir geliştirme deneyimi sunar.
Gerekli paketleri otomatik olarak yüklemek ve uygun ayarları yapılandırmak için yerleşik TypeScript desteği ile birlikte gelir.
New Projects
create-next-app
artık varsayılan olarak TypeScript ile birlikte geliyor.
npx create-next-app@latest
Existing Projects
Bir dosyayı .ts
/ .tsx
olarak yeniden adlandırarak projenize TypeScript ekleyin.
Gerekli bağımlılıkları otomatik olarak yüklemek için next dev
ve
next build
adreslerini çalıştırın ve önerilen yapılandırma seçeneklerini içeren bir
tsconfig.json
dosyası ekleyin.
Zaten bir jsconfig.json
dosyanız varsa, paths
derleyici seçeneğini eski
jsconfig.json
dosyasından yeni tsconfig.json
dosyasına kopyalayın ve eski
jsconfig.json
dosyasını silin.
Minimum TypeScript Version
İçe aktarma adlarında tür değiştiriciler
ve
performans iyileştirmeleri
gibi sözdizimi özelliklerini elde etmek için
TypeScript
'in en az v4.5.2
sürümünde olmanız şiddetle tavsiye edilir.
Static Generation and Server-side Rendering
İçin getStaticProps
, getStaticPaths
ve
getServerSideProps
sırasıyla GetStaticProps
, GetStaticPaths
ve
GetServerSideProps
türlerini kullanabilirsiniz:
import { GetStaticProps, GetStaticPaths, GetServerSideProps } from 'next'
export const getStaticProps = (async (context) => {
// ...
}) satisfies GetStaticProps
export const getStaticPaths = (async () => {
// ...
}) satisfies GetStaticPaths
export const getServerSideProps = (async (context) => {
// ...
}) satisfies GetServerSideProps
Bilmekte fayda var:
satisfies
, 4.9 sürümünde TypeScript'e eklenmiştir. TypeScript'in en son sürümüne yükseltmenizi öneririz.
API Routes
Aşağıda, API rotaları için yerleşik türlerin nasıl kullanılacağına dair bir örnek verilmiştir:
import type { NextApiRequest, NextApiResponse } from 'next'
export default function handler(req: NextApiRequest, res: NextApiResponse) {
res.status(200).json({ name: 'John Doe' })
}
Yanıt verilerini de yazabilirsiniz:
import type { NextApiRequest, NextApiResponse } from 'next'
type Data = {
name: string
}
export default function handler(
req: NextApiRequest,
res: NextApiResponse<Data>
) {
res.status(200).json({ name: 'John Doe' })
}
Custom App
Özel bir
App
adresiniz varsa, yerleşik
AppProps
türünü kullanabilir ve dosya adını aşağıdaki gibi ./pages/_app.tsx
olarak
değiştirebilirsiniz:
import type { AppProps } from 'next/app'
export default function MyApp({ Component, pageProps }: AppProps) {
return <Component {...pageProps} />
}
Path aliases and baseUrl
Next.js otomatik olarak tsconfig.json
"paths"
ve
"baseUrl"
seçeneklerini destekler.
Bu özellik hakkında daha fazla bilgiyi Modül Yolu takma adları belgesinde bulabilirsiniz.
Type checking next.config.js
next.config.js
dosyası Babel veya TypeScript tarafından ayrıştırılmadığı için bir JavaScript dosyası olmalıdır,
ancak aşağıdaki gibi JSDoc kullanarak IDE'nize bazı tür denetimleri ekleyebilirsiniz:
// @ts-check
/**
* @type {import('next').NextConfig}
**/
const nextConfig = {
/* config options here */
}
module.exports = nextConfig
Incremental type checking
v10.2.1
Next.js, tsconfig.json
adresinizde etkinleştirildiğinde
artımlı tür denetim
ini desteklediğinden, bu daha büyük uygulamalarda tür denetimini hızlandırmaya yardımcı olabilir.
Ignoring TypeScript Errors
Next.js, projenizde TypeScript hataları mevcut olduğunda üretim derlemenizde başarısız olur (next build
).
Next.js'nin uygulamanızda hatalar olsa bile tehlikeli bir şekilde üretim kodu üretmesini istiyorsanız, yerleşik tür denetimi adımını devre dışı bırakabilirsiniz.
Devre dışı bırakılmışsa, derleme veya dağıtım işleminizin bir parçası olarak tür denetimlerini çalıştırdığınızdan emin olun, aksi takdirde bu çok tehlikeli olabilir.
next.config.js
adresini açın ve typescript
yapılandırmasında
ignoreBuildErrors
seçeneğini etkinleştirin:
module.exports = {
typescript: {
// !! WARN !!
// Dangerously allow production builds to successfully complete even if
// your project has type errors.
// !! WARN !!
ignoreBuildErrors: true,
},
}
Custom Type Declarations
Özel türleri bildirmeniz gerektiğinde, next-env.d.ts
adresini değiştirmek isteyebilirsiniz. Ancak bu dosya
otomatik olarak oluşturulduğundan yaptığınız tüm değişiklikler üzerine yazılacaktır. Bunun yerine, yeni bir dosya oluşturmalısınız, buna
new-types.d.ts
diyelim ve tsconfig.json
adresinizde bu dosyaya referans verin:
{
"compilerOptions": {
"skipLibCheck": true
//...truncated...
},
"include": [
"new-types.d.ts",
"next-env.d.ts",
".next/types/**/*.ts",
"**/*.ts",
"**/*.tsx"
],
"exclude": ["node_modules"]
}
Version Changes
Version | Changes |
---|---|
v13.2.0 |
Statically typed links are available in beta. |
v12.0.0 |
SWC is now used by default to compile TypeScript and TSX for faster builds. |
v10.2.1 |
Incremental type checking
support added when enabled in your tsconfig.json .
|