最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ReactJS中使用TypeScript的方法

 更新時間:2024年04月28日 10:08:55   作者:hawk2014bj  
TypeScript 實際上就是具有強類型的 JavaScript,可以對類型進行強校驗,好處是代碼閱讀起來比較清晰,代碼類型出現(xiàn)問題時,在編譯時就可以發(fā)現(xiàn),而不會在運行時由于類型的錯誤而導致報錯,這篇文章主要介紹了ReactJS中使用TypeScript的方法,需要的朋友可以參考下

TypeScript

TypeScript 實際上就是具有強類型的 JavaScript,可以對類型進行強校驗,好處是代碼閱讀起來比較清晰,代碼類型出現(xiàn)問題時,在編譯時就可以發(fā)現(xiàn),而不會在運行時由于類型的錯誤而導致報錯。但是,從某種程度說TypeScript 失去了 JavaScript 動態(tài)語言的靈活性,代碼寫起來也會比較繁瑣,需要生命類型。

主要語法

首先,TypeScript 支持 JavaScript基本寫法,主要特性是加了類型,主要看下相對于 JavaScript 比較特殊的幾種寫法。

參數(shù)加類型

主流的強類型語言在函數(shù)中都是要定義參數(shù)類型的,如下,useName 的類型是字符串。

function greet(userName: string): string {
  return `Hello, ${user.name}! You are ${user.age} years old.`;
}

Type 和 Interface

Type主要用于定義類型。Interface 主要用于定義接口,Interface 可以被擴展、可以被類繼承。語法上 Type 和 Interface 可以互換,都可以僅當類型試用。但是,項目開發(fā)中,盡量不要混用,定義類型時就用 Type,定義接口時就用 Interface。

Type 試用方法

type Animal = {
  name: string;
  species: string;
};
type Loggable = {
  log(): void;
};
type LoggableAnimal = Animal & Loggable; //合并
const dog: LoggableAnimal = {
  name: "Buddy",
  species: "Canine",
  log() {
    console.log(`${this.name} is a ${this.species}`);
  }
};

Interface 試用方法

interface Person {
    name: string;
    age: number;
    introduce(): string;
}
class Student implements Person {
    name: string;
    age: number;
    course: string;
    constructor(name: string, age: number, course: string) {
        this.name = name;
        this.age = age;
        this.course = course;
    }
    introduce(): string {
        return `Hi, I'm ${this.name}, and I'm ${this.age} years old. I study ${this.course}.`;
    }
}

泛型

泛型是 TypeScript 非常重要的概念,在 React 中使用非常多。什么是泛型,簡單理解就是類型參數(shù)化,例如在 Animal 類中,有一個animal 屬性,這個屬性可以是 Cat或者Dog,不用泛型的話,可能要定義多個類,當然也可以使用接口或者父類進行抽象。有了泛型,只要通過泛型傳遞就可以了。

class Animal<T> {
    name: string; // Regular property for the animal's name
    animation: T;  // Generic property for the animal's animation
    constructor(name: string, animation: T) {
        this.name = name;
        this.animation = animation;
    }
    animate(): void {
        console.log(`The ${this.name} starts to: ${this.animation}`);
    }
}

TypeScript 中方法和類型也可以試用泛型。

#方法泛型
function createPair<S, T>(v1: S, v2: T): [S, T] {
  return [v1, v2];
}
console.log(createPair<string, number>('hello', 42)); // ['hello', 42]
#類型泛型
type Wrapped<T> = { value: T };
const wrappedValue: Wrapped<number> = { value: 10 };

TypeScript 上手很快難度不大,做個基本了解,就可以開始使用了,就是寫起來麻煩一些。

React 中使用 TypeScript

在 React 中使用 TypeScript 最重要的就是類型,例如,props 都有什么字段,字段都是什么類型。只要是在Typescript 中出現(xiàn)的對象,就必要有對應的類型,TypeScript 中如果不指定類型,如果是簡單類型可以自動解析,如果是函數(shù)參數(shù)默認為 Any。

代碼中{ title: string } 是行內類型

function MyButton({ title }: { title: string }) {
  return (
    <button>{title}</button>
  );
}
export default function MyApp() {
  return (
    <div>
      <h1>Welcome to my app</h1>
      <MyButton title="I'm a button" />
    </div>
  );
}

MyButtonProps 是單獨定義的類型

interface MyButtonProps {
  /** The text to display inside the button */
  title: string;
  /** Whether the button can be interacted with */
  disabled: boolean;
}
function MyButton({ title, disabled }: MyButtonProps) {
  return (
    <button disabled={disabled}>{title}</button>
  );
}

Hooks

React hooks 使用 TypeScript 主要用到的就是泛型,例如,useState

#自動解析為 bool
const [enabled, setEnabled] = useState(false);
#指定類型為Status
type Status = "idle" | "loading" | "success" | "error";
const [status, setStatus] = useState<Status>("idle");

Dom Event

DomEvent 是轉換到 TypeScript 之后比較難上手的,需要熟悉一下 React 的類型定義。這個有個辦法就是通過 inline 方法,然后VsCode 會給你提示。

export default function Form() {
  const [value, setValue] = useState("Change me");
  function handleChange(event: React.ChangeEvent<HTMLInputElement>) {
    setValue(event.currentTarget.value);
  }
  return (
    <>
      <input value={value} onChange={handleChange} />
      <p>Value: {value}</p>
    </>
  );
}

直接復制事件類型就可以。

在這里插入圖片描述

個人覺得 TypeScript 雖然現(xiàn)在都在推廣,但是確實失去了JavaScript 的靈活性和動態(tài)性,開銷效率降低不少,如果做的是類庫,還要有類型定義文件,看個人喜好和項目需求吧。

到此這篇關于ReactJS中使用TypeScript的文章就介紹到這了,更多相關ReactJS使用TypeScript內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • React組件的解耦技巧分享

    React組件的解耦技巧分享

    本文我們將和大家一起來研究如何有效地將組件解耦,讓我們的代碼變的復用性極高,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11
  • react頁面中存在多個input時巧妙設置value屬性方式

    react頁面中存在多個input時巧妙設置value屬性方式

    這篇文章主要介紹了react頁面中存在多個input時巧妙設置value屬性方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • React組件通信的實現(xiàn)示例

    React組件通信的實現(xiàn)示例

    在React中,組件通信是一個重要的概念,它允許不同組件之間進行數(shù)據(jù)傳遞和交互,本文主要介紹了React組件通信的實現(xiàn)示例,感興趣的可以了解一下
    2023-11-11
  • React Native中的RefreshContorl下拉刷新使用

    React Native中的RefreshContorl下拉刷新使用

    本篇文章主要介紹了React Native中的RefreshContorl下拉刷新使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • React中阻止事件冒泡的問題詳析

    React中阻止事件冒泡的問題詳析

    這篇文章主要給大家介紹了關于React中阻止事件冒泡問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用React具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • React實現(xiàn)菜單欄滾動功能

    React實現(xiàn)菜單欄滾動功能

    本文將會基于react實現(xiàn)滾動菜單欄功能,點擊菜單,內容區(qū)域會自動滾動到對應卡片,內容區(qū)域滑動,指定菜單欄會被選中,代碼簡單易懂,感興趣的朋友一起看看吧
    2024-03-03
  • react native 獲取地理位置的方法示例

    react native 獲取地理位置的方法示例

    這篇文章主要介紹了react native 獲取地理位置的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • React Native中導航組件react-navigation跨tab路由處理詳解

    React Native中導航組件react-navigation跨tab路由處理詳解

    這篇文章主要給大家介紹了關于React Native中導航組件react-navigation跨tab路由處理的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-10-10
  • 詳解如何在Remix 中使用 tailwindcss

    詳解如何在Remix 中使用 tailwindcss

    這篇文章主要為大家介紹了如何在Remix中使用tailwindcss方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • React之錯誤邊界 Error Boundaries示例詳解

    React之錯誤邊界 Error Boundaries示例詳解

    這篇文章主要為大家介紹了React之錯誤邊界Error Boundaries示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10

最新評論

民乐县| 弥勒县| 南投市| 镇远县| 八宿县| 会昌县| 东乡| 思茅市| 兴义市| 武隆县| 吴桥县| 台前县| 图木舒克市| 万载县| 略阳县| 无锡市| 瓮安县| 万山特区| 沽源县| 太仆寺旗| 琼海市| 昌宁县| 陇西县| 高平市| 扎兰屯市| 延寿县| 怀安县| 青海省| 丹棱县| 武平县| 镇平县| 上蔡县| 江都市| 信阳市| 扎赉特旗| 彰化县| 巴林左旗| 乌苏市| 滁州市| 奉节县| 来安县|