• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2022-2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16function foo(path: string): void {
17  console.log(path);
18}
19
20foo.bar = (path: string): string => {
21  return path + ': foo.bar';
22};
23
24foo.baz = 1;
25
26foo.bah = { x: 1, y: 2 };
27
28console.log(foo.baz);
29console.log(foo.bah);
30console.log(foo.name);
31console.log(foo.length);
32console.log(foo.arguments);
33console.log(foo.caller);
34
35// Arrow function
36const foo2 = (path: string) => {
37  console.log(path);
38};
39
40foo2.bar = 2;
41console.log(foo2.bar);
42console.log(foo2.name);
43console.log(foo2.length);
44console.log(foo2.arguments);
45console.log(foo2.caller);
46
47// Std 'Function' type
48const stdFunc: Function  = (path: string) => {
49  console.log(path);
50};
51
52console.log(stdFunc.name);
53console.log(stdFunc.length);
54console.log(stdFunc.arguments);
55console.log(stdFunc.caller);
56
57// Functional type
58type FuncType = (path: string) => void;
59let ft: FuncType = (path: string): string => {
60  return path + ': foo.bar';
61};
62
63console.log(ft.name);
64console.log(ft.length);
65console.log(ft.caller);
66
67// Functional type alias
68type FT2 = FuncType;
69let ft2: FT2 = (path: string): string => {
70  return path + ': foo.bar';
71};
72
73console.log(ft2.name);
74console.log(ft2.length);
75console.log(ft2.caller);