ããã«ã¡ã¯ã
TSããŒãžã§ã³ïŒ1.1
äžãããã
function foo() {
var x = 10;
var y = 11;
}
以åã¯
function foo() {
var x = 10;
var y = 11;
}
æ°ããã³ã³ãã€ã©ã§ã¯ãæ¹è¡ããããŸãã
function foo() {
var x = 10;
var y = 11;
}
ïŒäž¡æ¹ã®ã³ã³ãã€ã©ãŒã¯æåã®ç©ºã®è¡ãåé€ããŸããããæ°ããã³ã³ãã€ã©ãŒã¯ããã«äžæ©é²ãã§ããŸããïŒ
ããã¯ããã©ãŠã¶ãŒã§JavaScriptããããã°ãããšãã®ãšã¯ã¹ããªãšã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
èæ¯æ å ±ãè¿œå ããŠããŸã...æ°ããã³ã³ãã€ã©ããã¹ãŠã®ç©ºçœè¡ãåé€ããçç±ã¯ãããã_äžè²«ããŠ_å®è¡ã§ããå¯äžã®ããšã ããã§ãã 空çœè¡ã®ä¿åã¯ãã¯ã©ã¹ãã¢ãžã¥ãŒã«ã®å®£èšãªã©ãæžãæãã®å¯Ÿè±¡ãšãªãæ§é ã«é¢ããŠã¯ãåžžã«ããããŸãã¯ãã¹ã«ãªããŸãã ã³ã¡ã³ãã®ä¿åã«ã€ããŠãããŸã£ããåãåé¡ã«çŽé¢ããŠããŸãã ã§ããããç§ã¯ããã解決ããããšã«å ±æããŠããŸãããããã¯ç°¡åãªããšã§ã¯ãããŸããã
@NoelAbrahamsãããã°æã«ã©ã®ãããªåé¡ãçºçããã®ã
@ahejlsberg @NoelAbrahamså ã®CodePlexãããžã§ã¯ãã§
è¡ã®ä¿åã¯äž»ã«ãå€ãã³ãŒããä¿åãããšãã«æ¹è¡ãåå©çšããå€æãè¡ããšãã«çžå¯Ÿçãªééã䜿çšããæ©èœã§ãã ããªãã¡ããªããæã£ãŠããå ŽåïŒ
module M {
}
module N {
}
次ã«ããNãã®IIFEãçºè¡ãããšãã¯ããæžãçŽããŠããã¢ãžã¥ãŒã«ãšåã®æ§æèŠçŽ ã®éã®éåŠã¯ã€ãºãç¶æããå¿ èŠããããŸãããšèšããŸãã
ã³ã¡ã³ã/æ¹è¡ãé«ã¬ãã«ã®å¿ å®åºŠã§ä¿æãããšããã¿ãããã¿ã€ããã©ã®ããã«æ©èœãããã«ã€ããŠã®ååŸã¯æ¬¡ã®ãšããã§ãã
https://typescript.codeplex.com/SourceControl/latest#tests/Fidelity/emitter2/ecmascript5/Parser.ts
https://typescript.codeplex.com/SourceControl/latest#tests/Fidelity/emitter2/ecmascript5/Parser.ts.expected
ããã«ãå€ãã®äŸããããŸãã
https://typescript.codeplex.com/SourceControl/latest#tests/Fidelity/emitter/ecmascript5/
ç§ãå®è£ ããªãã£ãå¯äžã®æ©èœã¯ãã¢ã©ã€ã¡ã³ããã§ããã ã€ãŸããå ã®ã³ãŒãïŒãã©ã¡ãŒã¿ãŒå®£èšã§éåžžã«äžè¬çïŒã§äœããã®æ¹æ³ã§æŽåãããã³ãŒããããå Žåã¯ãåºåãããã³ãŒãã§ããããä¿æããå¿ èŠããããŸãã
ãããããããè¡ãã®ã¯éåžžã«ç°¡åã ã£ãã§ãããã
ãšã¯èšããã®ã®ãTSããJSãžã®æ§é ã®å€æã¯ã€ã³ãã³ããç¶æããããšããŸããã ããªãã¯ããã§ãããèŠãããšãã§ããŸãïŒ
https://typescript.codeplex.com/SourceControl/latest#tests/Fidelity/emitter/ecmascript5/ClassDeclaration/ClassDeclaration2.ts
https://typescript.codeplex.com/SourceControl/latest#tests/Fidelity/emitter/ecmascript5/ClassDeclaration/ClassDeclaration2.ts.expected
ãã¹ããããã¢ãžã¥ãŒã«ãšã¯ã©ã¹ãIIFEã«å€æããåŸã§ããã¹ããŒãã¡ã³ããïŒè€æ°è¡ã«ãŸããã£ãŠããå Žåã§ãïŒé©åã«ã€ã³ãã³ããããŠããããšã«æ³šæããŠãã ããã
@ahejlsberg ããã©ãŠã¶ã§ãããã°ãããšãã«é倧ãªåé¡ã¯ãããŸããã å®éã®TypeScriptãœãŒã¹ã³ãŒããšæ£ç¢ºã«å¯Ÿå¿ããŠããå Žåã¯ãJavaScriptã³ãŒããããã²ãŒããããã¬ãŒã¯ãã€ã³ããèšå®ããããã®è¡ãç°¡åã«èŠã€ããããšãã§ããŸãã
ç§ã¯å人çã«ç©ºã®è¡ããªããŠãçããããšãã§ããŸããããTSã¯_beautiful _ JavaScriptïŒïŒsmile :)ãä¿åããŠ
@ahejlsberg @NoelAbrahamsãã®äŒè©±ã«ãããã«é¢é£ããããã©ãŠã¶ãŒã§ã®ãããã°ã«ååšãã1ã€ã®åé¡ããããŸãã ã»ãã¿ãŒ/ã²ãã¿ãŒãã§ãŒã³ïŒjqueryãªã©ïŒãŸãã¯ãã§ãŒã³ãããã¹ã䜿çšãããšãå€æäžã«æ°ããã©ã€ã³ãã£ãŒãã倱ãããŸãã ããã¯èšã£ãŠããArrowé¢æ°ã䜿çšããå Žåã¯å€§ããªåé¡ã§ãã
äŸãšããŠïŒ
(<any> x).a('#test')
.b('test')
.c(() => 'foo')
.d(() => 'bar')
.e(() => 5)
.f(() => 6);
ã«ãªãïŒ
x.a('#test').b('test').c(function () { return 'foo'; }).d(function () { return 'bar'; }).e(function () { return 5; }).f(function () { return 6; });
ChromeãšsourceMapsã䜿çšããŠãããã¬ãŒã¯ãã€ã³ãã¯ã¹ããããããŸãã
http://www.typescriptlang.org/Playground#src =ïŒïŒ 3CanyïŒ 3EïŒ 20xïŒ.aïŒ 'ïŒ 23test'ïŒïŒ 0AïŒ 20ïŒ 20ïŒ 20ïŒ 20.bïŒ 'test'ïŒïŒ 0AïŒ 09.cïŒïŒïŒïŒ 20ïŒ 3DïŒ 3EïŒ 20'foo 'ïŒïŒ 0AïŒ 09.dïŒïŒïŒïŒ 20ïŒ 3DïŒ 3EïŒ 20'bar'ïŒïŒ 0AïŒ 09.eïŒïŒïŒïŒ 20 ïŒ 3DïŒ 3EïŒ 205ïŒïŒ 0AïŒ 09.fïŒïŒïŒïŒ 20ïŒ 3DïŒ 3EïŒ 206ïŒïŒ 3B
@mtraynham ãå®éãããªãã匷調ããåé¡ã¯å°ãéããšæããŸãã
以åã®ããŒãžã§ã³ã§ã¯ãã€ã³ã©ã€ã³é¢æ°ã®æ¬äœã¯åžžã«æ°ããè¡ã§çºè¡ãããŠããŸããã
// TS
var x = () => 'foo';
// JS - old
var x = function () {
return 'foo';
};
// JS - new
var x = function () { return 'foo'; };
ç§ããããåé¡ã§ããããšã«æ°ã¥ããŸããããã©ãŠã¶ã§ãããã°ãããšãã«ãã¬ãŒã¯ãã€ã³ããèšå®ã§ããããã«ãæã
æ»ã£ãŠfunction
ãäœæããå¿
èŠããããŸãã
@NoelAbrahamsãããç§ã¯ãããšãŸã£ããåãäžæçãªè§£æ±ºçã䜿çšããŠããŸã...ããããã®åé¡ã®åå ãšãªãé©åãªãã°ã§ãããã©ããïŒã©ã€ã³ãã£ãŒãã®æ¶å»ïŒããŸãã¯å¥ã®ãã°ãéãå¿ èŠããããŸããïŒ
å¥å·ã®ïŒ2259ãäœæããŸããã
javascriptéçºã³ãã¥ããã£ãtypescriptã«ç§»è¡ããããšãæ€èšããŠãããšã³ãžãã¢ãªã³ã°ãã£ã¬ã¯ã¿ãŒãšããŠãæ°ããè¡æ©èœã¯æ¬åœã«åœ¹ç«ã¡ãŸãã typescriptã®äž»ãªé åã®1ã€ã¯ãtypescriptã§çæãããJavascriptã§äœæãããã³ãŒãã®å¯èªæ§ãšæ§é ãç¶æããããšã§ããã
æè¿ã®æŽæ°ãšã--removeCommentsãã³ãã³ãã©ã€ã³ãã£ã¬ã¯ãã£ãã®è¿œå ã§ã³ã¡ã³ããä¿æãããŠããã®ãèŠãã®ã¯çŽ æŽãããããšã§ãã
@timjmartelãšåæ§ã®çç±ã§ããããå¿ èŠã§ããéçºè ã¯ãçºè¡ãããJSã_èŠæ ããè¯ã_ããã«èŠãããšãæ¡çšã«å¯Ÿããæµæãå°ãªããªããŸãã ïŒå°ãªããšãåçŽæ¹åã®ïŒç©ºçœãä¿æãããšãã³ãŒãã¯ãã·ã³ã«ãã£ãŠçæãããããã«èŠããªããªãã人éã«ãã£ãŠæžãããidomaticJSã³ãŒãã®ããã«èŠããŸãã
ç§ãã¡ã®ããŒã ãTSãæŸæ£ãã代ããã«ãã©ã³ã¹ãã€ã«ãããJSãç¶è¡ããããšã決å®ããå Žåã人éã«åªãã空çœãããã°ãæŸåºãããJSãœãŒã¹ãæ¡çšããæ¹ãã¯ããã«ç°¡åã§ãã
空ã®è¡ã«é¢ããŠã¯ãããããŸãã¯ãã¹ããå Žåã§ããä»ã®ãšãããããããæŸåºãããããšã¯å¯èœã§ããããïŒ ãã®ãããªå®éšçãªæ©èœã¯ãã-keepEmptyLinesããªãã·ã§ã³ã䜿çšããŠèŠæ±ã§ããŸããåªããJSã䜿çšããããšã¯ããã»ã©éèŠã§ã¯ãããŸããããããèªã¿ãããJSã䜿çšããããšã¯éèŠã§ãã
é£éé¢æ°åŒã³åºãã«é¢ããŠããŠãŒã¶ãŒããã¬ãŒã¯ãã€ã³ããèšå®ã§ããããã«ããããã«ãlineã1ååŒã³åºãããšã¯å¯èœã§ããããïŒ ç¹°ãè¿ãã«ãªããŸããããã®æ©èœãå¥ã®ãããããŸãã¯ãã¹ãã§ããå Žåã¯ãã-oneCallForLineããªãã·ã§ã³ã䜿çšããŠå°ããããšãã§ããŸãã
ãæž èŽããããšãããããŸããã
å®éãé£éé¢æ°åŒã³åºãã¯ãœãŒã¹ã³ãŒãã®çŸåæ©èœã«ãã£ãŠåå²ãããå¯èœæ§ãããããããã®ãããªæ©èœãTypeScriptã«åã蟌ãããšã¯æå³ããããŸããã
ããã¯ããã»ã©é£ããããšã§ã¯ãªããtsconfig.jsonã«ãªãã·ã§ã³ãããã ãã§ã¯ãããŸãã
preserveWhitespace: true/false
ïŒ
ããããç§ã¯ãããã³ã³ãã€ã©ãªãã·ã§ã³ãšããŠèŠãŠããŸããïŒ https ïŒ
ç§ã¯æ°ãã€ããã 空çœãä¿æããªãçç±ã®1ã€ã¯ã.tsã§ã¯ãªã.jsã誀ã£ãŠç·šéããã®ãé²ãã®ã«åœ¹ç«ã€ããã§ãã ããã¹ãããšã®1ã€ã¯ã.jsãã¡ã€ã«ãèªã¿åãå°çš/å®è¡å°çšãšããŠæžãåºãããšã ãšæããŸãã ãããã£ãŠãããã¯åé¡ã§ã¯ãªããããããŸããã
ããã¯èšã£ãŠããtscã.jsãã¡ã€ã«ãèªã¿åãå°çš/å®è¡å°çšãšããŠæžãåºããšã¯æããªãã®ã§ããããããè¡ãããã«tscãæ§æããæ¹æ³ã¯ãããŸããïŒ
ããããçŸæç¹ã§ã¯ãããŸããã ãã ããå¥ã®åé¡ãèªç±ã«éããŠãã ããã
@DanielRosenwasser空çœãä¿æãããå Žåã¯ãå¥ã®åé¡ãéãå¿ èŠããããš
ããããããšããã§ããã
+1
+1
+1
矀è¡ã¯preserveWhitespace: true/false
æãã§ããŸã
@ORESoftware ++
ãããéèŠãªçç±ã¯ãTypeScriptãJSã«ãæ£åžžã«å£åãããããšã«ãªã£ãŠããããã§ãã ä»ã®ãšãããç¹ã«TypeScriptãäœæããå Žåã¯ãJSãå°ãèªã¿ãããããæ°ããè¡ãä¿æã§ããŸããããJSãå¥ã®å Žæã«é ä¿¡ããããšã«ãªã£ãŠããŸãã
+1 preserveWhitespace: true/false
esformatterã䜿çšããŠ
次ã®æ§æãã¡ã€ã«ã䜿çšããŸãã
{
"lineBreak": {
"before": {
"FunctionDeclaration": ">=2",
"FunctionDeclarationOpeningBrace": 0,
"FunctionDeclarationClosingBrace": 1,
"MethodDefinition": ">=2",
"ClassDeclaration": ">=2"
},
"after": {
"FunctionDeclaration": ">=2",
"FunctionDeclarationOpeningBrace": 1,
"MethodDefinitionClosingBrace": ">=2",
"ClassClosingBrace": ">=2"
}
}
}
@mtraynhamããªãã®äŸïŒ
(<any> x).a('#test')
.b('test')
.c(() => 'foo')
.d(() => 'bar')
.e(() => 5)
.f(() => 6);
ææ°ã®ã³ã³ãã€ã©ã䜿çšãããšããã®JSãçæãããŸãã
x.a('#test')
.b('test')
.c(function () { return 'foo'; })
.d(function () { return 'bar'; })
.e(function () { return 5; })
.f(function () { return 6; });
ïŒTS PlayGround https://goo.gl/JViurrãåç §ïŒ
TSããŒãžã§ã³1.1ïŒãã®åé¡ãäœæãããTypeScriptã®ããŒãžã§ã³ïŒä»¥éãå€ãã®å€æŽããããŸããã ãã¶ãããã®åé¡ã¯è§£æ±ºã§ããŸããïŒ @ahejlsberg ïŒ
@ valera-rozuvan代ããã«ïŒ2259ãéããŸããã ç§ã®åé¡ã¯ã©ã€ã³ãã£ãŒãã«é¢é£ããŠããŸãããããã®ãã°ã§èª¬æãããŠããã®ãšãŸã£ããåãåé¡ã§ã¯ãããŸããã§ããã ïŒ2259ã¯ãã°ããåã«ééãããŸããïŒ2015幎5æïŒã
ããã¯bril- andrewesformatteræ§æã§ããããã°ãä¿®æ£ãããŠããŸãïŒã¯ã©ã¹å®£èšã«importãšããåèªãå«ãŸããŠããå Žåãæ¹è¡ã¯ãããŸããã§ããïŒã
{
"lineBreak": {
"before": {
"FunctionDeclaration": ">=2",
"FunctionDeclarationOpeningBrace": 0,
"FunctionDeclarationClosingBrace": 1,
"MethodDefinition": ">=2",
"ClassDeclaration": ">=2",
"ExportNamedDeclaration": 2
},
"after": {
"FunctionDeclaration": ">=2",
"FunctionDeclarationOpeningBrace": 1,
"MethodDefinitionClosingBrace": ">=2",
"ClassClosingBrace": ">=2"
}
}
}
esformatterã䜿çšããŠãåé¡å šäœã解決ãããšã¯æããŸããã ãã¡ãããé¢æ°ãªã©ã®åšãã«ç©ºçœè¡ãèªåçã«æ¿å ¥ã§ããŸããããããç§ã«ãšã£ãŠãé¢æ°å ã®ç©ºçœè¡ã¯ããã«éèŠã§ãã æ£æã®æ®µèœã®ãããªç©ºçœè¡ã䜿çšããŠãåã ã®èããã°ã«ãŒãåããŸãã
é¢æ°å ã®ãããã®ç©ºçœè¡ã¯ãé¢æ°ã®æ§é ãäŒããã®ã«åœ¹ç«ã¡ãŸãã ãããããªããšãèªã¿ããããæãªãããããšãããããŸãã
@ahejlsberg ts-jestã䜿çšãããšããŠããããã¹ãã®åºåã«èª€ã£ãè¡çªå·ã衚瀺ãããŸãããã®åé¡ã¯ãjsåºåã§ç©ºã®è¡ãåé€ãããããšãåå ã®ããã§ãã æçµçãªjsã«ãããã®è¡ãæ®ãããšããªãããã»ã©é£ããã®ãèå³ããããŸãã ããã«ã€ããŠä»ã«æ å ±ã¯ãããŸããïŒ ã©ãã«ãããŠãããå®çŸããã®ãæäŒã£ãŠããããŸããïŒ :)
ãããšãããã§ã«ããŒãžãããŠããŠããŸã ãªãªãŒã¹ãããŠããŸãããïŒ -> V4 Next BigããŒãžã§ã³ïŒ3143
@JimTheManãœãŒã¹ãããã䜿çšããå Žåã¯ã source-map-support
ããã±ãŒãžã䜿çšãããšãåºåã§æ£ããã¹ã¿ãã¯ãã¬ãŒã¹ãååŸã§ããŸãã
ç§ããã®åé¡ã«ééããŸãã å·®åããããäœæãããããã®ç©ºçœã®å€æŽãå ã«æ»ãããšã§åé¿çãèãåºããŸããã jsdiffã䜿çšãããšãæ§é åããããªããžã§ã¯ããäœæããå¿ èŠã«
import * as diff from 'diff';
const patch =
diff.parsePatch(diff.createPatch('file', oldText, newText, '', ''));
const hunks = patch[0].hunks;
for (let i = 0; i < hunks.length; ++i) {
let lineOffset = 0;
const hunk = hunks[i];
hunk.lines = hunk.lines.map(line => {
if (line === '-') {
lineOffset++;
return ' ';
}
return line;
});
hunk.newLines += lineOffset;
for (let j = i + 1; j < hunks.length; ++j) {
hunks[j].newStart += lineOffset;
}
}
return diff.applyPatch(oldText, patch);
ãã®åé¿çã䜿çšãããšãå ã®ãã¡ã€ã«ã®ãã¹ãŠã®æ¹è¡ãä¿æã§ããŸãã
@zeroliuã³ã³ãã€ã«ã¹ãããã§é¡èãªæéé 延ãçºçããŸããïŒ
@ahejlsbergãã®åé¡ãä¿®æ£ãã䟡å€ããããšæããŸããïŒ
@ valera-rozuvanã¯ããããžã§ã¯ãã®ãµã€ãºã«ãã£ãŠç°ãªããŸãã 100ã1000 LOCã®10åã®ãã¡ã€ã«ããã©ã³ã¹ãã€ã«ãããŠãŒã¹ã±ãŒã¹ã§ã¯ãç®ç«ã£ãé 延ã¯çºçããŸããã
ããã«ãŸã 解決çã¯ãããŸããïŒ ç§ããã®ãã©ãã«ã«å·»ã蟌ãŸããŸã...
ããŒã ã¡ã€ãã®@emadumããtscãã³ã¡ã³ããä¿æã§ããããšãç§ã«æãåºããããšããç§ã¯ã³ã³ãã€ã©èªäœã§ãããä¿®æ£ããããšããŠããéäžã§ããã ããã¯ãæ¹è¡ãä¿åãããšããããªããŸãšããªä»äºãããŠããããã«èŠããå°ããªäžå£ãã€ãã©ã€ã³ã§ãïŒ
const gulp = require('gulp');
const ts = require('gulp-typescript');
const through = require('through2');
function preserveNewlines() {
return through.obj(function(file, encoding, callback) {
const data = file.contents.toString('utf8');
const fixedUp = data.replace(/\n\n/g, '\n/** THIS_IS_A_NEWLINE **/');
file.contents = Buffer.from(fixedUp, 'utf8');
callback(null, file);
});
}
function restoreNewlines() {
return through.obj(function(file, encoding, callback) {
const data = file.contents.toString('utf8');
const fixedUp = data.replace(/\/\*\* THIS_IS_A_NEWLINE \*\*\//g, '\n');
file.contents = Buffer.from(fixedUp, 'utf8');
callback(null, file);
});
}
gulp.task('default', function () {
return gulp.src('src/**/*.ts')
.pipe(preserveNewlines())
.pipe(ts({
removeComments: false
}))
.pipe(restoreNewlines())
.pipe(gulp.dest('lib'));
});
ãã£ãšè³¢ãã³ã¡ã³ããããã°èª€æ€ç¥ãé²ãããšãã§ãããšæããŸãããä»æ¥ã¯ããŸãããããã§ãã ããã¯æ¯èŒçå°ããªãã¡ã€ã«ã§ã®ã¿ãã¹ãããŸããããããã©ãŒãã³ã¹ã®ãªãŒããŒãããã¯æå°éã§ããã
hth
@mbroadst
ç§ã¯ããªãã®ã¢ã€ãã¢ãããŒã¹ãšããŠäœ¿çšããããšã«ãªããæçµçã«ã¯npmã¢ãžã¥ãŒã«ã«ãªããŸã§æ¡åŒµããŸããã
https://www.npmjs.com/package/gulp-preserve-typescript-whitespace
ç§ã¯Readmeã§ããªãã®æçš¿ãã¯ã¬ãžããããŸãããããŸãããã°ããªãã¯æ°ã«ããŸãã:)
æãåèã«ãªãã³ã¡ã³ã
矀è¡ã¯
preserveWhitespace: true/false
æãã§ããŸã@ORESoftware ++