Typescript Bildirimleri Neden Referanslarla Oluşturuluyor?
TypeScript ile yazılmış bir projem var (lib projesi) ve TypeScript ile yazılmış başka bir proje tarafından kullanılıyor (app projesi). Lib projesi tek bir js dosyasına derleniyor ve bir bildirim (declarations) dosyası oluşturuyor. Her şey beklendiği gibi çalışıyor ama oluşturulan bildirim dosyası en üstte şu referansı içeriyor-
/// <reference path="typings/index.d.ts" />
Lib projesinde tsconfig.json dosyasının yanında bir typings dizini vardır ama bu sadece lib projesi için gereklidir. Bildirim dosyasında bir referans olarak dahil edilmemelidir. İşte benim tsconfig'im
{
"compilerOptions": {
"module": "commonjs",
"experimentalDecorators": true,
"declaration": true,
"noImplicitAny": false,
"removeComments": true,
"preserveConstEnums": true,
"outFile": "proj-lib.js",
"sourceMap": true
},
"include": [
"./js/**/*.ts"
]
}
Deklarasyon dosyam neden referanslar içeriyor?
Geçici Çözüm
gulp-regex-replace kullanarak bildirim dosyalarındaki referansları kaldırmak.
tsResult.dts
.pipe(replace({regex: /\/\/\/\s*<reference[^>]+>\s*/g, replace: ''})) // remove references in declaration file
.pipe(gulp.dest(target));
Bu ideal değil. Umarım bir tsc çözümü vardır.
Cevap #1
TypeScript derleyici seçenekleri için dokümanlara bakın :)
https://www.typescriptlang.org/docs/handbook/compiler-options.html
--declaration boolean (varsayılan)false Karşılık gelen ‘.d.ts’ dosyasını oluşturur.
Yalnızca tip tanımlamaları için referanslara (.d.ts dosyaları) ihtiyacınız var
Eğer tsconfig dosyanızda (3. satırdaki seçenek) bunu kapatırsanız, gitmesi gerekir.
Şerefe