Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.2k views
in Technique[技术] by (71.8m points)

typescript对象类型(函数)应该怎么定义?

正在跟着 https://jspang.com/detailed?i... 学习typescript.
看到这里:

我们还可以定义一个函数类型,并确定返回值。代码如下:
const jianXiaoJieJie: () => string = () => {
  return "大脚";
};

看到这个有点懵了。首先如果是函数定义我觉得是这样:

const jianXiaoJieJie:()=>{return "大脚";}

然后本身函数返回的是字符串,所以再改进成这样:

const jianXiaoJieJie:():string=>{return "大脚";}

实际上这样是报错的。所以,

const jianXiaoJieJie: () => string = () => {
  return "大脚";
};

这个怎么理解?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

包含声明和赋值两部分,你不要混到一起去看。

首先是声明:

// 伪代码,实际会报错,理解意思就行
let str: string;               // str 是一个 string 类型
let num: number;               // num 是一个 number 类型
let func1: Function;           // func1 是一个 Function 类型(不限制有没有入参、返回值是什么)
let func2: () => string;       // func2 是一个返回值是 string 的 Function 类型
let func3: (number) => string; // func3 是一个有一个 number 类型入参、返回值是 string 的 Function 类型

然后是赋值:

str = '';
num = 0;
func1 = () => {};
func2 = () => '';
func3 = (i) => i + '';

上面几个你把声明和赋值合起来,都是下面这样,你没有问题吧?

let str: string = '';
let num: number = 0;
let func1: Function = () => {};

如果没有问题,那为啥到了后面的你就认为有不同了呢?

let func2: () => string = () => '';
let func3: (number) => string = (i) => i + '';

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...