דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. getTime אינו פונקציה

getTime אינו פונקציה

מתוזמן נעוץ נעול הועבר תכנות
23 פוסטים 6 כותבים 740 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • OdedDvirO מנותק
    OdedDvirO מנותק
    OdedDvir
    השיב לרפאל ב נערך לאחרונה על ידי OdedDvir
    #11

    @רפאל כי היא מטעה אותי לחשוב לפי הצהרת הפונקציה שגם בזמן ריצה Birthdate הוא Date, בעוד שהוא בעצם string, ולחשוב שהשגיאה לא קשורה ל typing.

    מוטי אורןמ רפאלר 2 תגובות תגובה אחרונה
    2
    • מוטי אורןמ מנותק
      מוטי אורןמ מנותק
      מוטי אורן
      השיב לOdedDvir ב נערך לאחרונה על ידי
      #12

      @odeddvir הענין הזה הוא אחד הדברים שמפריעים לי במיוחד ב-TS. כלומר, הוא מאוד עוזר לך לשלוט בקוד שאתה כותב (כשאני כותב TS, הקוד באמת יותר מסודר לי בראש בצורה די משמעותית), אבל מצד שני, כשאתה עובר לעולם המעשה אתה צריך באמת לשים לב טוב מאוד שאתה לא משתמש בקוד באופן לא תקין (הדוגמה למעלה ממחישה זאת היטב), שאז מנגנון ה-Types והקומפילציה לא ממש עוזר.

      תגובה 1 תגובה אחרונה
      5
      • רפאלר מנותק
        רפאלר מנותק
        רפאל
        השיב לOdedDvir ב נערך לאחרונה על ידי רפאל
        #13

        @odeddvir ניתן לטפל בעניין ע"י שימוש נכון בתחביר.

        אפשרות אחת היא שימוש בUnion type, לדוגמא string | Date מייצג ערך שיכול להיות Date או String.

        interface Person {
          name: string;
          dob: string | Date;
        }
        

        Union type מאפשר לך לגשת למאפיינים שמשותפים לכל הסוגים המרכיבים את הUnion ללא כל בעיה, אולם כדי לגשת למאפייינים היחודיים לאחד מהסוגים המרכיבים את הUnion נדרשת המרה של הUnion לסוג הספיציפי הדרוש ע"י בדיקת JS שהסוג אכן תואם והמהדר של Typescript ידייק וישנה את הסוג המוצהר (הUnion) לסוג הספיציפי, לדוגמא:

          person.dob.getDay() // Error: getDay does not exist on type string
        
          if (typeof person.dob === 'object') {
            person.dob.getDay() // Date בתוך התנאי הסוג הוא 
          }
        

        דרך נוספת היא ליצור שני מודלים, הראשון יייצג את הערך היוצא לשרת (Outbound), והשני יייצג את הערך שחוזר מהשרת (Inbound) לדוגמא:

        interface PersonBase {
          name: string;
        }
        
        interface ResponsePerson extends PersonBase {
          dbo: string;
        }
        
        class Person implements PersonBase {
          constructor(public name: string, public dbo: Date) { }
        
          public static fromPersonResponse({ name, dbo }: ResponsePerson): Person {
            return new Person(name, new Date(dbo))
          }
        }
        
        תגובה 1 תגובה אחרונה
        5
        • yyyY מנותק
          yyyY מנותק
          yyy
          השיב לרפאל ב נערך לאחרונה על ידי yyy
          #14

          @רפאל אמר בgetTime אינו פונקציה:

          @yyy על מנת להוכיח שאני טועה (כתמיד) נסה להוסיף את השורה הבאה לקוד, ווודא שהתוצאה שלילית.

          console.log(typeof this.DB[0].BirthDate === 'string')
          

          זה מחזיר true.

          אני מבין שהשגיאה היא בשורה

          var ageDifMs = Date.now() - BirthDate.getTime();
          
          

          בכדי לנסות לפתור את הבעיה
          עשיתי את הדבר הבא

          var ageDifMs = Date.now() - JSON.parse(BirthDate).getTime();   
          

          בקיצור להפוך את זה לאובייקט.
          הבעיה שכאן כבר יש שגיאה שהטייפ לא מתאים:

          Argument of type 'Date' is not assignable to parameter of type 'string'
          

          כי הצהרתי שזה Date, ועכשיו אני מתייחס לזה כ-string.
          בקיצור בלגן.
          איך מתקדמים?

          רפאלר תגובה 1 תגובה אחרונה
          0
          • רפאלר מנותק
            רפאלר מנותק
            רפאל
            השיב לyyy ב נערך לאחרונה על ידי
            #15

            @yyy נסה לבצע את המשימה כך

            Date.now() - new Date(BirthDate).getTime
            
            yyyY תגובה 1 תגובה אחרונה
            4
            • yyyY מנותק
              yyyY מנותק
              yyy
              השיב לרפאל ב נערך לאחרונה על ידי
              #16

              @רפאל תודה רבה איש מקצוען.

              רפאלר תגובה 1 תגובה אחרונה
              0
              • רפאלר מנותק
                רפאלר מנותק
                רפאל
                השיב לyyy ב נערך לאחרונה על ידי
                #17

                @yyy הפניתי את ראשי אנה ואנה לראות את מי כינית מקצוען.

                yyyY תגובה 1 תגובה אחרונה
                3
                • yyyY מנותק
                  yyyY מנותק
                  yyy
                  השיב לרפאל ב נערך לאחרונה על ידי
                  #18

                  @רפאל
                  גלול מעלה בשרשור ותמצא את התשובה. אם אתה משלם מס קבלת מחמאות, ראה את דברי כמבוטלים.

                  תגובה 1 תגובה אחרונה
                  1
                  • רחמיםר מנותק
                    רחמיםר מנותק
                    רחמים מורחק
                    השיב לOdedDvir ב נערך לאחרונה על ידי
                    #19

                    @odeddvir אמר בgetTime אינו פונקציה:

                    הייתה לי הרגשה שזה קשור לתוהו ובוהו של JS

                    @odeddvir אמר בgetTime אינו פונקציה:

                    ושבזמן הריצה אנחנו עדיין במערב הפרוע של JS

                    👍

                    dovidD תגובה 1 תגובה אחרונה
                    0
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      השיב לרחמים ב נערך לאחרונה על ידי dovid
                      #20

                      @רפאל סתם להחכים, הרי תיאורטית TypeScript יכלו לייצר קוד JS טהור שבודק התאמה לטיפוס (אולי זה יקר מבחינת ביצועים) וזורק שגיאה, זה לא הפואנטה של TS בכלל, או שיש מקרים שהקו'ד המיוצר נותן טיפה קשיחות ביחס לקוד JS רגיל (נפקא מינה בדיוק למקרים כאלה שההודעות שגיאה יהיו חכמות יותר)?

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      רפאלר תגובה 1 תגובה אחרונה
                      2
                      • רפאלר מנותק
                        רפאלר מנותק
                        רפאל
                        השיב לdovid ב נערך לאחרונה על ידי רפאל
                        #21

                        @dovid התשובה שלילית, הקוד המיוצר זהה כמעט לחלוטין למקור, למעט מקרים ספורים (למשל הOptional operator לפני שהיה זמין בJS).

                        מאמר שהתפרסם בNCC Group תחת הכותרת:
                        ?Does TypeScript Offer Security Improvements Over JavaScript
                        קובע באופן נחרץ:

                        מה אנחנו מרוויחים מהשימוש ב-TypeScript מבחינת בטיחות? התשובה היא אפס. למעשה אם כבר, השימוש בTypeScript רק גורע מהבטיחות מכיוון שהוא מעניק לנו תחושת שווא של טיפוסיות קשוחה ובדיקת סוגים שלא קיימות בפועל בזמן הריצה.

                        שימושית כל שתהיה בזמן הכתיבה, אין שום יתרון לשימוש בזמן הריצה.

                        OdedDvirO תגובה 1 תגובה אחרונה
                        5
                        • OdedDvirO מנותק
                          OdedDvirO מנותק
                          OdedDvir
                          השיב לרפאל ב נערך לאחרונה על ידי
                          #22

                          @רפאל אמר בgetTime אינו פונקציה:

                          למעשה אם כבר, השימוש בTypeScript רק גורע מהבטיחות מכיוון שהוא מעניק לנו תחושת שווא של טיפוסיות קשוחה ובדיקת סוגים שלא קיימות בפועל בזמן הריצה.

                          בדיוק הנקודה שציינתי.

                          רפאלר תגובה 1 תגובה אחרונה
                          3
                          • רפאלר מנותק
                            רפאלר מנותק
                            רפאל
                            השיב לOdedDvir ב נערך לאחרונה על ידי רפאל
                            #23

                            TypeScript עדיין נחשבת לאופציה היחידה עבור פרוייקטים בינוניים ומעלה, בהם הפיתוח בJS b נחשב לקשה במיוחד\על גבול הבלתי אפשרי, מטרת המאמר שהזכרתי איננה לשלול את השימוש בTypeScript אלא לציין את מגבלותיה.

                            אני מצרף את הDesign Goals מתוך הWIki של TypeScript (שים לב להדגשות):
                             

                            המטרות

                            1. Statically identify constructs that are likely to be errors

                            2. Provide a structuring mechanism for larger pieces of code

                            3. Impose no runtime overhead on emitted programs

                            4. Emit clean, idiomatic, recognizable JavaScript code

                            5. Produce a language that is composable and easy to reason about

                            6. Align with current and future ECMAScript proposals

                            7. Preserve runtime behavior of all JavaScript code

                            8. Avoid adding expression-level syntax

                            9. Use a consistent, fully erasable, structural type system

                            10. Be a cross-platform development tool

                            11. Do not cause substantial breaking changes from TypeScript 1.0
                               

                            אינן המטרות

                            1. Exactly mimic the design of existing languages. Instead, use the behavior of JavaScript and the intentions of program authors as a guide for what makes the most sense in the language.

                            2. Aggressively optimize the runtime performance of programs. Instead, emit idiomatic JavaScript code that plays well with the performance characteristics of runtime platforms.

                            3. Apply a sound or "provably correct" type system. Instead, strike a balance between correctness and productivity.

                            4. Provide an end-to-end build pipeline. Instead, make the system extensible so that external tools can use the compiler for more complex build workflows.

                            5. Add or rely on run-time type information in programs, or emit different code based on the results of the type system. Instead, encourage programming patterns that do not require run-time metadata.

                            6. Provide additional runtime functionality or libraries. Instead, use TypeScript to describe existing libraries.

                            7. Introduce behavior that is likely to surprise users. Instead have due consideration for patterns adopted by other commonly-used languages.

                            תגובה 1 תגובה אחרונה
                            3
                            • dovidD dovid העביר נושא זה מ-תכנות ב-

                            • 1
                            • 2
                            בא תתחבר לדף היומי!
                            • התחברות

                            • אין לך חשבון עדיין? הרשמה

                            • התחברו או הירשמו כדי לחפש.
                            • פוסט ראשון
                              פוסט אחרון
                            0
                            • דף הבית
                            • קטגוריות
                            • פוסטים אחרונים
                            • משתמשים
                            • חיפוש
                            • חוקי הפורום