جاوااسکریپت - چرا من کد منبع Vue.js را با TypeScript میبینم؟
من کد منبع vue.js را فقط برای یک نگاه مرور کردم و بعضی کدهای عجیب دیدم که بعد از تحقیق متوجه شدم اینها سینتکس TypeScript هستند. مشکل من این است که این سینتکس در یک فایل ".js" است، که نمیفهمم چرا، چون میدانم فایلهای TypeScript (.ts) باید به جاوااسکریپت خالص کامپایل شوند. پس چرا هنوز در یک فایل .js، نوع پارامتر تابع را میبینم؟
function hasAncestorData (node: VNode) {
const parentNode = node.parent
return isDef(parentNode) && (isDef(parentNode.data) || hasAncestorData(parentNode))
}
پاسخ شماره ۱
این در واقع یک کد فلو است. شما میتوانید نظر /* @flow */ را در ابتدای برخی فایلها ببینید که بررسی نوع ابزار را فعال میکند. این کمی شبیه تایپاسکریپت است، اما اینها یک چیز نیستند.
نگاهی سریع به پوشه src در مخزن گیتهاب Vue.js نشان میدهد که آنها در واقع از .js برای کد JavaScript با Flow خود استفاده میکنند، برای مثال در src/core/vdom/create-component.js:
const componentVNodeHooks = { init (vnode: VNodeWithData, hydrating: boolean): ?boolean {
اما اگر به پوشه dist نگاه کنیم، میتوانیم ببینیم که آن نشانهگذاریهای نوع Flow برای توزیع حذف شدهاند. برای مثال، اینجا همان موارد بالا در dist/vue.js است (آن شماره خط به مرور زمان تغییر خواهد کرد):
var componentVNodeHooks = { init: function init (vnode, hydrating) {
