לפני שאתם הולכים ל-AI חכם תשתמשו בכלים קיימים :)
-
תגובה: תכנות + AI
@chagold כתב בתכנות + AI:
אני מתכוין לבקשות ברמה הגיונית. כגון אם יש לי פרוייקט ב-vue שאני צריך לעדכן קודים גם בקומפוננטים, גם במודולים וכמו"כ getters וכו'. שאבקש ממנו להוסיף שדות מסויימים והוא יודע להציע הצעות על כל המקומות הרלוונטים בפרוייקט, ולא רק ברמת הקובץ הנוכחי.
תשובה שלא ממין השאלה, אני ממליץ בחום להשתמש בטייפסקריפט
במקרה כזו של הוספת שדות, הקומפיילר כבר יצביע על כל מקום שצריך לעדכן בגלל ההוספה
בפרט ב-vue3 ממש קל להתחיל לכתוב טייפסקריפט, פשוט מוסיפיםlang="ts"
לקטע ה-script
זה יכול לעזור לך יותר מכל AI
אני כבר לא רוצה שוב לתכנת ב-JS
יש כמה רמות בתוך TS כמה הקומפיילר יחמיר בבדיקות, לפי רמת החומרה כך רמת התועלתאני יכול להבטיח עם הרבה ביטחון שמי שיתחיל לכתוב טייפסקריפט לא יתחרט ויראה הרבה תועלת
-
@yossiz, ברור שהדברים נכונים, אני אישית גם התחלתי לכתוב בts אבל לצערי לא ממש יורד לסוף דעתו... כלומר זה הרבה מסבך לי את העניינים...
למשל יש לי טופס שיוצר משאב וגם יכול לקבל ערכים למלאות את השדות ולעדכן אותו, בReact הערך של הקלט לא יכול להיות null (יכול אבל זה לא נכון מבחינתו), עכשיו אך הוא - גם יתן לי לשאול עליו עם הוא לא null או undefaind וגם יתן לי להכניס אותו בתוך קלט, לחילופין ערך של קלט מספר הוא מחרוזת, ואני חייב להחזיק את הסוג של התוכן הזה כמספר כדי להפעיל עליו תכונות אחרות כמו חישוב וכדו'.
בקיצור, זה ממש מסבך אותי ובפרק בשימוש בספריות (עם תמיכה בTS) כמו למשל לאחרונה השתמשתי בreact-select זה היה סיוט...
הדבר המרגיז באמת ששגיאה שלו היא ארוכה כאורך גלות האחרונה, במקרה של סוג מורכב מכמה כמו אובייקט וכדו', במקום להביא רק את ההבדל בין הסוג שניסת להכניס לנדרש הוא מביא את כל הסוג כולו על כל ענפיו וענפי ענפיו...
מקווה שהבנת בגדול למה כוונת המשורר.ושלא יובן ממני שTS מסבך, אני הוא זה שמסתבך כי אני מצליח להכיר את כל הניאונסים שלו.
-
@ש-ב-ח כתב בלפני שאתם הולכים ל-AI חכם תשתמשו בכלים קיימים :
למשל יש לי טופס שיוצר משאב וגם יכול לקבל ערכים למלאות את השדות ולעדכן אותו, בReact הערך של הקלט לא יכול להיות null (יכול אבל זה לא נכון מבחינתו), עכשיו אך הוא - גם יתן לי לשאול עליו עם הוא לא null או undefaind וגם יתן לי להכניס אותו בתוך קלט
לא ממש הבנתי כלום מהתיאור
לחילופין ערך של קלט מספר הוא מחרוזת, ואני חייב להחזיק את הסוג של התוכן הזה כמספר כדי להפעיל עליו תכונות אחרות כמו חישוב וכדו'
בעיני טייפסקריפט רק עוזר פה, הוא שומר עליך מפני קריאה של פונקציה של מספר על מחרוזת או להיפך
בשימוש בספריות (עם תמיכה בTS)
לא נתקלתי בבעיות
ושלא יובן ממני שTS מסבך, אני הוא זה שמסתבך כי אני מצליח להכיר את כל הניאונסים שלו.
אני רוצה להסכים, אבל בלי למעט בכבודך...
בכל מקרה אם יש שאלות, אפשר לשאול על גבי הפורום, אני לא מבטיח כלום, אבל כתומך נלהב של טייפסקריפט יש סיכוי גדול שהשאלה יעניין אותי, ולפחות אעיף מבט...
-
@yossiz כתב בלפני שאתם הולכים ל-AI חכם תשתמשו בכלים קיימים :
בכל מקרה אם יש שאלות, אפשר לשאול על גבי הפורום, אני לא מבטיח כלום, אבל כתומך נלהב של טייפסקריפט יש סיכוי גדול שהשאלה יעניין אותי, ולפחות אעיף מבט...
קיבלתי.
ואגב אי אפשר למעט מכבודי... - הוא פשוט כבר ככה הכי נמוך.אנסה לפרוס את שאלותיי כאן על גבי הפורום, מקווה שאצליח כן להסביר אותם כשהם אחת אחת ומכוונות יותר לדוגמא מעשית.
-
אני מצטרף להמלצה של @yossiz
אבל מסתייג מהמשפט הזה:@yossiz כתב בלפני שאתם הולכים ל-AI חכם תשתמשו בכלים קיימים :
אני יכול להבטיח עם הרבה ביטחון שמי שיתחיל לכתוב טייפסקריפט לא יתחרט ויראה הרבה תועלת
למרות שהוא יראה הרבה תועלת, הוא יתחרט אלף פעמים בין תועלת לתועלת.
אני גם כמעט לא יכול היום לכתוב בונילה JS, ועם כל זה, ההתממשקות של TS עם חבילות NPM רחוק מלהיות מושלם, יש המון בעיות בדרך
אבל כאמור, התועלת רבה על הנזק, וזה שווה לדעתי העניה. -
למרות שהוא יראה הרבה תועלת, הוא יתחרט אלף פעמים בין תועלת לתועלת.
עוד לא נתקלתי בבעיות. אולי כי בינתיים השתמשתי רק בספרייות מפורסמות
@yossiz כתב בלפני שאתם הולכים ל-AI חכם תשתמשו בכלים קיימים :
הוא יתחרט אלף פעמים בין תועלת לתועלת
זה לא מובן לי. מתי שאתה רוצה אתה יכול לכתוב JS נקי (ע"י פתח המילוט של
any
) ועדיין לקבל את התועלת לגבי שאר הקוד. לא מבין מה שייך כאן חרטה על המעשים הטובים של העבר -
@yossiz כתב בלפני שאתם הולכים ל-AI חכם תשתמשו בכלים קיימים :
זה לא מובן לי. מתי שאתה רוצה אתה יכול לכתוב JS נקי (ע"י פתח המילוט של any) ועדיין לקבל את התועלת לגבי שאר הקוד. לא מבין מה שייך כאן חרטה על המעשים הטובים של העבר
אני כבר לא זוכר במדויק, מדובר על תסכולים מצטברים של למעלה משלש שנים...
אבל יש דוגמא אחת שנתקלתי בה לאחרונה. חבילת NPM שמתפקדת כמודל ES2020, ואי אפשר לעשות לה require, אני מנסה לשלב אותה בפרוייקט שעובד עם מודל commonjs, אז הקומפיילר החכם של TS מקמפל את כל ה import ל require, והייבוא של החבילה הנ"ל נכשל, ומאידך אם אני משדרג את כל הפרוייקט למודל ES2020 הרבה חבילות אחרות יישברו, ולך תתמודד עם פרויקט מנופח של עשרות חבילות..
לא מצאתי פיתרון לבעיה הזו כי בסוף התייתר הצורך בחבילה הזו, אבל זו דוגמא לתסכול מתמשך שאופייני לצורת העבודה של TS, TS זה לא אמיתי, זה זיוף שמנסה לחקות שפה טיפוסית קשוחה, וזה אמור איכשהו להתלבש על מודלים וחבילות שנכתבו לא בצורה מותאמת מראש, וזה פתח לבעיות.
לעומת נוד, אנגולר עובד מדהים עם TS, לא נתקלתי כמעט בבעיות שם, בגלל שזה נכתב מראש בצורה הנכונה מותאם לעבודה עם TS. -
@יוסף-בן-שמעון כתב בלפני שאתם הולכים ל-AI חכם תשתמשו בכלים קיימים :
אבל יש דוגמא אחת שנתקלתי בה לאחרונה. חבילת NPM שמתפקדת כמודל ES2020, ואי אפשר לעשות לה require, אני מנסה לשלב אותה בפרוייקט שעובד עם מודל commonjs, אז הקומפיילר החכם של TS מקמפל את כל ה import ל require, והייבוא של החבילה הנ"ל נכשל, ומאידך אם אני משדרג את כל הפרוייקט למודל ES2020 הרבה חבילות אחרות יישברו, ולך תתמודד עם פרויקט מנופח של עשרות חבילות..
למה זה בעיה של TS? זה לא בעיה כללית של node שאי אפשר להשתמש בחבילות commonjs ו-esm ביחד (ודאי לא לעשות import מתוך פרויקט שאינו esm - כלומר לא מוגדר
"type": "module"
בpackage.json
)? -
@צדיק-תמים יש דרכים להתמודד עם שילוב כזה ב JS, הבעיה ב TS שהיא בכלל לא נותנת לך אופציה להתמודד עם זה כי היא מקמפלת import ל require בלי לשאול אותך
-
עוד בעיה שאני זוכר, אני עובד עם סקוולייז TS, וזה לכאורה אמור להיות שילוב מנצח, אבל בפועל אני מוצא את עצמי המון פעמים משתמש ב @ts-ignore בבניית שאילתות, כי ה type שבנו לסקוולייז לא מספיק חכם להתמודד עם כל מיני שילובים.
אולי זה פתיר, אבל הזמן שיקח לי לעבוד על כל דבר כזה כדי לפתור אותו, לא מצדיק את ההשקעה. אז אני מצד אחד נהנה מהטיפוסיות, אבל מצד שני אני לא יכול להיות רגוע שהקומפיילר יתקן אותי על שגיאות, כי אולי זה ברשימת ההתעלמות. -
@יוסף-בן-שמעון כתב בלפני שאתם הולכים ל-AI חכם תשתמשו בכלים קיימים :
@צדיק-תמים יש דרכים להתמודד עם שילוב כזה ב JS
מהן הדרכים להתמודד בJS?
הבעיה ב TS שהיא בכלל לא נותנת לך אופציה להתמודד עם זה כי היא מקמפלת import ל require בלי לשאול אותך
https://github.com/microsoft/TypeScript/issues/43329
אם אני מבין נכון,"moduleResolution": "Node16
אמור לפתור את הבעיה, לא?
ראה גם https://www.npmjs.com/package/@brillout/import -
פוסט זה נמחק!
-
@יוסף-בן-שמעון כתב בלפני שאתם הולכים ל-AI חכם תשתמשו בכלים קיימים :
אבל יש דוגמא אחת שנתקלתי בה לאחרונה. חבילת NPM שמתפקדת כמודל ES2020, ואי אפשר לעשות לה require, אני מנסה לשלב אותה בפרוייקט שעובד עם מודל commonjs, אז הקומפיילר החכם של TS מקמפל את כל ה import ל require, והייבוא של החבילה הנ"ל נכשל, ומאידך אם אני משדרג את כל הפרוייקט למודל ES2020 הרבה חבילות אחרות יישברו, ולך תתמודד עם פרויקט מנופח של עשרות חבילות..
גם אני נתקלתי, גם ב-JS וגם ב-TS, לא חשבתי שהבעיה קיימת יותר ב-TS מאשר ב-JS
בפרוייקט האחרון שלי הפכתי את כל הפרוייקט שלי ל-ESM בגלל זה
(require עדיין אמור לעבוד)
יש לי קומיט ברפו שלי עם הכותרת:
Make sindresorhus happy and convert to ESMהאיש הזה יש לו יותר מאלף חבילות NPM, מהם יש מפורסמות מאוד, והוא מתעקש שכולם יהיה ESM בלבד